Skip to content

Monitor Configuration fails with more than two monitors in many different configurations #430

@Tbusk

Description

@Tbusk

Note: There is a bug bounty on this. View at https://gitpay.me/#/task/1277/monitor-configuration-fails-with-more-than-two-monitors-in-many-different-configurations

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.

Image

Moving it around even more may get a segfault as well.

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.

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

Hardware Info

Two identical 27" dell monitors plus one 49" samsung monitor, all 4k and in different orientations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions