Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1509847 - mutter SEGV in Wayland if DRM resolution is not matched
mutter SEGV in Wayland if DRM resolution is not matched
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: mutter (Show other bugs)
7.5
Unspecified Unspecified
unspecified Severity high
: rc
: ---
Assigned To: Florian Müllner
Desktop QE
: OtherQA
Depends On:
Blocks: 1481401
  Show dependency treegraph
 
Reported: 2017-11-06 03:01 EST by fujiwara
Modified: 2018-05-17 10:39 EDT (History)
4 users (show)

See Also:
Fixed In Version: mutter-3.26.2-3.el7
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2018-04-10 09:06:05 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Patch of meta-monitor-config-manager.c (617 bytes, patch)
2017-11-06 03:02 EST, fujiwara
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2018:0770 None None None 2018-04-10 09:07 EDT

  None (edit)
Description fujiwara 2017-11-06 03:01:23 EST
GNOME Wayland caused a SEGV in RHEL 7.5:

Program received signal SIGSEGV, Segmentation fault.
0x00007f5f7daa9fba in meta_monitor_config_manager_create_current (
    config_manager=0x1cef4f0) at backends/meta-monitor-config-manager.c:607
607	  primary_logical_monitor_config->is_primary = TRUE;

(gdb) print primary_logical_monitor_config
$1 = (MetaLogicalMonitorConfig *) 0x0

#0  0x00007f5f7daa9fba in meta_monitor_config_manager_create_current (config_manager=0x1cef4f0) at backends/meta-monitor-config-manager.c:607
#1  0x00007f5f7dab5312 in meta_monitor_manager_ensure_configured (manager=0x1d041b0) at backends/meta-monitor-manager.c:552
#2  0x00007f5f7db7d27c in meta_monitor_manager_kms_ensure_initial_config (manager=0x1d041b0) at backends/native/meta-monitor-manager-kms.c:1253
#3  0x00007f5f7dab4e88 in meta_monitor_manager_ensure_initial_config (manager=0x1d041b0) at backends/meta-monitor-manager.c:415
#4  0x00007f5f7dab58d7 in meta_monitor_manager_constructed (object=0x1d041b0)
    at backends/meta-monitor-manager.c:733
#5  0x00007f5f77d7a292 in g_object_new_internal ()
    at /lib64/libgobject-2.0.so.0
#6  0x00007f5f77d7bb0d in g_object_new_with_properties ()
    at /lib64/libgobject-2.0.so.0
#7  0x00007f5f77d7c4f1 in g_object_new () at /lib64/libgobject-2.0.so.0
#8  0x00007f5f7db75a2e in meta_backend_native_create_monitor_manager (backend=0x1cf1910) at backends/native/meta-backend-native.c:405
#9  0x00007f5f7da9dee3 in create_monitor_manager (backend=0x1cf1910)
    at backends/meta-backend.c:364
#10 0x00007f5f7da9e073 in meta_backend_real_post_init (backend=0x1cf1910)
    at backends/meta-backend.c:444
#11 0x00007f5f7db75998 in meta_backend_native_post_init (backend=0x1cf1910)
    at backends/native/meta-backend-native.c:385
---Type <return> to continue, or q <return> to quit---
#12 0x00007f5f7da9e598 in meta_backend_post_init (backend=0x1cf1910)
    at backends/meta-backend.c:632
#13 0x00007f5f7da9eda5 in meta_clutter_init () at backends/meta-backend.c:1034
#14 0x00007f5f7db044d4 in meta_init () at core/main.c:573
#15 0x000000000040214f in main (argc=1, argv=0x7ffcd19f40e8) at main.c:443


I think the API meta_monitor_config_manager_create_current() does not exist in upstream.

This is caused by meta_monitor_is_active() is false.

#0  0x00007fc27532aa10 in meta_monitor_is_active (monitor=0x2f01440)
    at backends/meta-monitor.c:201
#1  0x00007fc275322c53 in create_logical_monitor_config_from_output (monitor_manager=0x17481b0, monitor=0x2f01440, primary_logical_monitor_config=0x0, layout_mode=META_LOGICAL_MONITOR_LAYOUT_MODE_LOGICAL)
    at backends/meta-monitor-config-manager.c:569
#2  0x00007fc275322d22 in meta_monitor_config_manager_create_current (config_manager=0x7fc244006050) at backends/meta-monitor-config-manager.c:601

197       MetaOutput *output;
199       output = meta_monitor_get_main_output (monitor);
201       return output->crtc && output->crtc->current_mode;
(gdb) print output->crtc->current_mode
$8 = (MetaCrtcMode *) 0x0

The current_mode could not be gotten by drm_mode_equal() in backends/native/meta-monitor-manager-kms.c:init_crtc() .


Since the API does not exist in upstream, I think it would be good to delete the API or fix it.
Comment 2 fujiwara 2017-11-06 03:02 EST
Created attachment 1348451 [details]
Patch of meta-monitor-config-manager.c

After I applied this patch, mutter works fine in my box.
Comment 5 fujiwara 2017-11-07 23:13:15 EST
I confirmed mutter-3.26.2-3.el7 fixes this issue.
Comment 8 errata-xmlrpc 2018-04-10 09:06:05 EDT
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2018:0770

Note You need to log in before you can comment on or make changes to this bug.