elementary / elementary/settings-display
Monitor Configuration fails with more than two monitors in many different configurations
- Dominant language
- Vala
- Stars
- 16
- Forks
- 19
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 1
Description
### What Happened?
When trying to change layouts of my monitors, the app is not allowing many valid configurations. It resets the layout when it deems them invalid.
Example of a case that fails: If I move my samsung monitor down to where the top of the leftmost monitor is y-wise, it willl reset.
Moving it around even more may get a segfault as well.
```bash
process 95609 (io.elementary.s) of user 1000 dumped core.
Module libarchive.so.13 from deb libarchive-3.7.2-2ubuntu0.5.amd64
Module libudev.so.1 from deb systemd-255.4-1ubuntu8.10.amd64
Module libgcc_s.so.1 from deb gcc-14-14.2.0-4ubuntu2~24.04.amd64
Module libstdc++.so.6 from deb gcc-14-14.2.0-4ubuntu2~24.04.amd64
Module libzstd.so.1 from deb libzstd-1.5.5+dfsg2-2build1.1.amd64
Module libsystemd.so.0 from deb systemd-255.4-1ubuntu8.10.amd64
Stack trace of thread 95609:
#0 0x00007aa79f330778 g_hash_table_lookup (libglib-2.0.so.0 + 0x49778)
#1 0x00007aa7a05ac1f2 n/a (libgobject-2.0.so.0 + 0x351f2)
#2 0x00007aa7a05ac7c1 g_signal_emit_valist (libgobject-2.0.so.0 + 0x357c1)
#3 0x00007aa7a05ac883 g_signal_emit (libgobject-2.0.so.0 + 0x35883)
#4 0x00007aa7a05982e4 n/a (libgobject-2.0.so.0 + 0x212e4)
#5 0x00007aa7a059b8b3 g_object_notify_by_pspec (libgobject-2.0.so.0 + 0x248b3)
#6 0x00007aa794090de7 display_display_widget_move_y (libdisplay.so + 0x28de7)
#7 0x00007aa794091637 n/a (libdisplay.so + 0x29637)
#8 0x00007aa79409166e n/a (libdisplay.so + 0x2966e)
Sep 09 11:29:19 g kernel: io.elementary.s[95609]: segfault at 7ffca85f2ff8 ip 00007aa79f330778
sp 00007ffca85f3000 error 6 in libglib-2.0.so.0.8000.0[49778,7aa79f305000+a00>
```
It seems the two dell monitors cannot have the same y position even with different x positions. That seems to cause the segfault.
Also, it is possible that when displays overlap, to have a much larger crash, which results in getting logged out.
```bash
Process 3344 (gala) of user 1000 dumped core.
Module libgcc_s.so.1 from deb gcc-14-14.2.0-4ubuntu2~24.04.amd64
Module libstdc++.so.6 from deb gcc-14-14.2.0-4ubuntu2~24.04.amd64
Module libzstd.so.1 from deb libzstd-1.5.5+dfsg2-2build1.1.amd64
Module libudev.so.1 from deb systemd-255.4-1ubuntu8.10.amd64
Module libsystemd.so.0 from deb systemd-255.4-1ubuntu8.10.amd64
Stack trace of thread 3344:
#0 0x00007213f149eb2c __pthread_kill_implementation (libc.so.6 + 0x9eb2c)
#1 0x00007213f144527e __GI_raise (libc.so.6 + 0x4527e)
#2 0x00007213f14288ff __GI_abort (libc.so.6 + 0x288ff)
#3 0x00007213f25d3f5b n/a (libglib-2.0.so.0 + 0x1ff5b)
#4 0x00007213f263cbb7 g_assertion_message_expr (libglib-2.0.so.0 + 0x88bb7)
#5 0x00007213f1ceb25b n/a (libmutter-14.so.0 + 0xeb25b)
#6 0x00007213f1cf1d62 n/a (libmutter-14.so.0 + 0xf1d62)
#7 0x00007213f1ce7d5a n/a (libmutter-14.so.0 + 0xe7d5a)
#8 0x00007213f2607e60 g_list_foreach (libglib-2.0.so.0 + 0x53e60)
#9 0x00007213f1cc8c58 n/a (libmutter-14.so.0 + 0xc8c58)
#10 0x00007213f1cbf426 n/a (libmutter-14.so.0 + 0xbf426)
#11 0x00007213f1cab648 n/a (libmutter-14.so.0 + 0xab648)
#12 0x00007213f1ed26cc n/a (libmutter-clutter-14.so.0 + 0x2c6cc)
#13 0x00007213f25866bd n/a (libgobject-2.0.so.0 + 0x356bd)
#14 0x00007213f25867c1 g_signal_emit_valist (libgobject-2.0.so.0 + 0x357c1)
#15 0x00007213f2586883 g_signal_emit (libgobject-2.0.so.0 + 0x35883)
#16 0x00007213f1f36410 n/a (libmutter-clutter-14.so.0 + 0x90410)
#17 0x00007213f1f077ac n/a (libmutter-clutter-14.so.0 + 0x617ac)
#18 0x00007213f26115c5 n/a (libglib-2.0.so.0 + 0x5d5c5)
#19 0x00007213f2670737 n/a (libglib-2.0.so.0 + 0xbc737)
#20 0x00007213f2611f87 g_main_loop_run (libglib-2.0.so.0 + 0x5df87)
#21 0x00007213f1cd4cea meta_context_run_main_loop (libmutter-14.so.0 + 0xd4cea)
#22 0x00005c944bb13e85 n/a (gala + 0x38e85)
#23 0x00007213f142a1ca __libc_start_call_main (libc.so.6 + 0x2a1ca)
#24 0x00007213f142a28b __libc_start_main_impl (libc.so.6 + 0x2a28b)
#25 0x00005c944bb07c25 _start (gala + 0x2cc25)
```
### Steps to Reproduce
1. Plug in three monitors and adjust the displays around. Many configurations are not working.
### Expected Behavior
Monitor configurations that are valid would work.
### OS Version
8.x (Circe)
### OS Architecture
amd64 (on most hardwares)
### Session Type
Classic Session (X11, This is the default) and Secure (Wayland)
### Software Version
Latest release (I have run all updates) and latest version on main branch
### Log Output
```shell
```
### Hardware Info
Two identical 27" dell monitors plus one 49" Samsung monitor, all 4k and in different orientations.
Contributor guide
Assessment
This issue has not been assessed yet.