Mageia Bugzilla – Attachment 11751 Details for
Bug 26942
GDM and gnome-shell crash on startup due to segfault in libmutter (32-bit only)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
New Account
|
Forgot Password
Patch to fix the fault
0001-Fix-segfaults-on-32-bit-systems.patch (text/plain), 6.86 KB, created by
Martin Whitaker
on 2020-07-17 13:26:06 CEST
(
hide
)
Description:
Patch to fix the fault
Filename:
MIME Type:
Creator:
Martin Whitaker
Created:
2020-07-17 13:26:06 CEST
Size:
6.86 KB
patch
obsolete
>From 026f493b0af07838cbfbb3ad0166453f873cf488 Mon Sep 17 00:00:00 2001 >From: Martin Whitaker <mageia@martin-whitaker.me.uk> >Date: Fri, 17 Jul 2020 11:36:47 +0100 >Subject: [PATCH] Fix segfaults on 32-bit systems. > >The new "id" properties for the MetaCrtc* and MetaOuput* objects are 64-bit >values, so take care to pass 64-bit values when calling g_object_new. > >Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/1343. > >diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c >index ca3d200a7..42f545191 100644 >--- a/src/backends/meta-monitor-manager-dummy.c >+++ b/src/backends/meta-monitor-manager-dummy.c >@@ -96,7 +96,7 @@ create_mode (CrtcModeSpec *spec, > crtc_mode_info->refresh_rate = spec->refresh_rate; > > return g_object_new (META_TYPE_CRTC_MODE, >- "id", mode_id, >+ "id", (uint64_t)mode_id, > "info", crtc_mode_info, > NULL); > } >@@ -205,7 +205,7 @@ append_monitor (MetaMonitorManager *manager, > *modes = g_list_concat (*modes, new_modes); > > crtc = g_object_new (META_TYPE_CRTC_DUMMY, >- "id", g_list_length (*crtcs) + 1, >+ "id", (uint64_t)g_list_length (*crtcs) + 1, > "gpu", gpu, > NULL); > *crtcs = g_list_append (*crtcs, crtc); >@@ -237,7 +237,7 @@ append_monitor (MetaMonitorManager *manager, > output_info->n_possible_crtcs = 1; > > output = g_object_new (META_TYPE_OUTPUT_DUMMY, >- "id", number, >+ "id", (uint64_t)number, > "gpu", gpu, > "info", output_info, > NULL); >@@ -291,7 +291,7 @@ append_tiled_monitor (MetaMonitorManager *manager, > MetaCrtc *crtc; > > crtc = g_object_new (META_TYPE_CRTC_DUMMY, >- "id", g_list_length (*crtcs) + i + 1, >+ "id", (uint64_t)g_list_length (*crtcs) + i + 1, > "gpu", gpu, > NULL); > new_crtcs = g_list_append (new_crtcs, crtc); >@@ -358,7 +358,7 @@ append_tiled_monitor (MetaMonitorManager *manager, > output_info->n_possible_crtcs = n_tiles; > > output = g_object_new (META_TYPE_OUTPUT_DUMMY, >- "id", number, >+ "id", (uint64_t)number, > "gpu", gpu, > "info", output_info, > NULL); >diff --git a/src/backends/x11/meta-crtc-xrandr.c b/src/backends/x11/meta-crtc-xrandr.c >index b03e73c83..d52b00cbc 100644 >--- a/src/backends/x11/meta-crtc-xrandr.c >+++ b/src/backends/x11/meta-crtc-xrandr.c >@@ -244,7 +244,7 @@ meta_crtc_xrandr_new (MetaGpuXrandr *gpu_xrandr, > all_transforms = > meta_monitor_transform_from_xrandr_all (xrandr_crtc->rotations); > crtc_xrandr = g_object_new (META_TYPE_CRTC_XRANDR, >- "id", crtc_id, >+ "id", (uint64_t)crtc_id, > "gpu", gpu, > "all-transforms", all_transforms, > NULL); >diff --git a/src/backends/x11/meta-gpu-xrandr.c b/src/backends/x11/meta-gpu-xrandr.c >index 5f6bc7894..b2301e332 100644 >--- a/src/backends/x11/meta-gpu-xrandr.c >+++ b/src/backends/x11/meta-gpu-xrandr.c >@@ -154,7 +154,7 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu, > > crtc_mode_name = get_xmode_name (xmode); > mode = g_object_new (META_TYPE_CRTC_MODE, >- "id", xmode->id, >+ "id", (uint64_t)xmode->id, > "name", crtc_mode_name, > "info", crtc_mode_info, > NULL); >diff --git a/src/backends/x11/meta-output-xrandr.c b/src/backends/x11/meta-output-xrandr.c >index 49fa838db..a2fa2f643 100644 >--- a/src/backends/x11/meta-output-xrandr.c >+++ b/src/backends/x11/meta-output-xrandr.c >@@ -871,7 +871,7 @@ meta_output_xrandr_new (MetaGpuXrandr *gpu_xrandr, > output_info_init_backlight_limits_xrandr (output_info, xdisplay, output_id); > > output = g_object_new (META_TYPE_OUTPUT_XRANDR, >- "id", output_id, >+ "id", (uint64_t)output_id, > "gpu", gpu_xrandr, > "info", output_info, > NULL); >diff --git a/src/tests/headless-start-test.c b/src/tests/headless-start-test.c >index 075b9b809..aa41c4741 100644 >--- a/src/tests/headless-start-test.c >+++ b/src/tests/headless-start-test.c >@@ -137,14 +137,14 @@ meta_test_headless_monitor_connect (void) > crtc_mode_info->refresh_rate = 60.0; > > crtc_mode = g_object_new (META_TYPE_CRTC_MODE, >- "id", 1, >+ "id", (uint64_t)1, > "info", crtc_mode_info, > NULL); > test_setup->modes = g_list_append (NULL, crtc_mode); > > gpu = META_GPU (meta_backend_get_gpus (meta_get_backend ())->data); > crtc = g_object_new (META_TYPE_CRTC_TEST, >- "id", 1, >+ "id", (uint64_t)1, > "gpu", gpu, > NULL); > test_setup->crtcs = g_list_append (NULL, crtc); >@@ -169,7 +169,7 @@ meta_test_headless_monitor_connect (void) > output_info->connector_type = META_CONNECTOR_TYPE_DisplayPort; > > output = g_object_new (META_TYPE_OUTPUT_TEST, >- "id", 1, >+ "id", (uint64_t)1, > "gpu", gpu, > "info", output_info, > NULL); >diff --git a/src/tests/monitor-test-utils.c b/src/tests/monitor-test-utils.c >index 3752a6537..6ab1d0312 100644 >--- a/src/tests/monitor-test-utils.c >+++ b/src/tests/monitor-test-utils.c >@@ -556,7 +556,7 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, > crtc_mode_info->flags = setup->modes[i].flags; > > mode = g_object_new (META_TYPE_CRTC_MODE, >- "id", i, >+ "id", (uint64_t)i, > "info", crtc_mode_info, > NULL); > >@@ -569,7 +569,7 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, > MetaCrtc *crtc; > > crtc = g_object_new (META_TYPE_CRTC_TEST, >- "id", i + 1, >+ "id", (uint64_t)i + 1, > "gpu", test_get_gpu (), > NULL); > >@@ -676,7 +676,7 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, > setup->outputs[i].panel_orientation_transform; > > output = g_object_new (META_TYPE_OUTPUT_TEST, >- "id", i, >+ "id", (uint64_t)i, > "gpu", test_get_gpu (), > "info", output_info, > NULL); >-- >2.21.3 >
From 026f493b0af07838cbfbb3ad0166453f873cf488 Mon Sep 17 00:00:00 2001 From: Martin Whitaker <mageia@martin-whitaker.me.uk> Date: Fri, 17 Jul 2020 11:36:47 +0100 Subject: [PATCH] Fix segfaults on 32-bit systems. The new "id" properties for the MetaCrtc* and MetaOuput* objects are 64-bit values, so take care to pass 64-bit values when calling g_object_new. Fixes https://gitlab.gnome.org/GNOME/mutter/-/issues/1343. diff --git a/src/backends/meta-monitor-manager-dummy.c b/src/backends/meta-monitor-manager-dummy.c index ca3d200a7..42f545191 100644 --- a/src/backends/meta-monitor-manager-dummy.c +++ b/src/backends/meta-monitor-manager-dummy.c @@ -96,7 +96,7 @@ create_mode (CrtcModeSpec *spec, crtc_mode_info->refresh_rate = spec->refresh_rate; return g_object_new (META_TYPE_CRTC_MODE, - "id", mode_id, + "id", (uint64_t)mode_id, "info", crtc_mode_info, NULL); } @@ -205,7 +205,7 @@ append_monitor (MetaMonitorManager *manager, *modes = g_list_concat (*modes, new_modes); crtc = g_object_new (META_TYPE_CRTC_DUMMY, - "id", g_list_length (*crtcs) + 1, + "id", (uint64_t)g_list_length (*crtcs) + 1, "gpu", gpu, NULL); *crtcs = g_list_append (*crtcs, crtc); @@ -237,7 +237,7 @@ append_monitor (MetaMonitorManager *manager, output_info->n_possible_crtcs = 1; output = g_object_new (META_TYPE_OUTPUT_DUMMY, - "id", number, + "id", (uint64_t)number, "gpu", gpu, "info", output_info, NULL); @@ -291,7 +291,7 @@ append_tiled_monitor (MetaMonitorManager *manager, MetaCrtc *crtc; crtc = g_object_new (META_TYPE_CRTC_DUMMY, - "id", g_list_length (*crtcs) + i + 1, + "id", (uint64_t)g_list_length (*crtcs) + i + 1, "gpu", gpu, NULL); new_crtcs = g_list_append (new_crtcs, crtc); @@ -358,7 +358,7 @@ append_tiled_monitor (MetaMonitorManager *manager, output_info->n_possible_crtcs = n_tiles; output = g_object_new (META_TYPE_OUTPUT_DUMMY, - "id", number, + "id", (uint64_t)number, "gpu", gpu, "info", output_info, NULL); diff --git a/src/backends/x11/meta-crtc-xrandr.c b/src/backends/x11/meta-crtc-xrandr.c index b03e73c83..d52b00cbc 100644 --- a/src/backends/x11/meta-crtc-xrandr.c +++ b/src/backends/x11/meta-crtc-xrandr.c @@ -244,7 +244,7 @@ meta_crtc_xrandr_new (MetaGpuXrandr *gpu_xrandr, all_transforms = meta_monitor_transform_from_xrandr_all (xrandr_crtc->rotations); crtc_xrandr = g_object_new (META_TYPE_CRTC_XRANDR, - "id", crtc_id, + "id", (uint64_t)crtc_id, "gpu", gpu, "all-transforms", all_transforms, NULL); diff --git a/src/backends/x11/meta-gpu-xrandr.c b/src/backends/x11/meta-gpu-xrandr.c index 5f6bc7894..b2301e332 100644 --- a/src/backends/x11/meta-gpu-xrandr.c +++ b/src/backends/x11/meta-gpu-xrandr.c @@ -154,7 +154,7 @@ meta_gpu_xrandr_read_current (MetaGpu *gpu, crtc_mode_name = get_xmode_name (xmode); mode = g_object_new (META_TYPE_CRTC_MODE, - "id", xmode->id, + "id", (uint64_t)xmode->id, "name", crtc_mode_name, "info", crtc_mode_info, NULL); diff --git a/src/backends/x11/meta-output-xrandr.c b/src/backends/x11/meta-output-xrandr.c index 49fa838db..a2fa2f643 100644 --- a/src/backends/x11/meta-output-xrandr.c +++ b/src/backends/x11/meta-output-xrandr.c @@ -871,7 +871,7 @@ meta_output_xrandr_new (MetaGpuXrandr *gpu_xrandr, output_info_init_backlight_limits_xrandr (output_info, xdisplay, output_id); output = g_object_new (META_TYPE_OUTPUT_XRANDR, - "id", output_id, + "id", (uint64_t)output_id, "gpu", gpu_xrandr, "info", output_info, NULL); diff --git a/src/tests/headless-start-test.c b/src/tests/headless-start-test.c index 075b9b809..aa41c4741 100644 --- a/src/tests/headless-start-test.c +++ b/src/tests/headless-start-test.c @@ -137,14 +137,14 @@ meta_test_headless_monitor_connect (void) crtc_mode_info->refresh_rate = 60.0; crtc_mode = g_object_new (META_TYPE_CRTC_MODE, - "id", 1, + "id", (uint64_t)1, "info", crtc_mode_info, NULL); test_setup->modes = g_list_append (NULL, crtc_mode); gpu = META_GPU (meta_backend_get_gpus (meta_get_backend ())->data); crtc = g_object_new (META_TYPE_CRTC_TEST, - "id", 1, + "id", (uint64_t)1, "gpu", gpu, NULL); test_setup->crtcs = g_list_append (NULL, crtc); @@ -169,7 +169,7 @@ meta_test_headless_monitor_connect (void) output_info->connector_type = META_CONNECTOR_TYPE_DisplayPort; output = g_object_new (META_TYPE_OUTPUT_TEST, - "id", 1, + "id", (uint64_t)1, "gpu", gpu, "info", output_info, NULL); diff --git a/src/tests/monitor-test-utils.c b/src/tests/monitor-test-utils.c index 3752a6537..6ab1d0312 100644 --- a/src/tests/monitor-test-utils.c +++ b/src/tests/monitor-test-utils.c @@ -556,7 +556,7 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, crtc_mode_info->flags = setup->modes[i].flags; mode = g_object_new (META_TYPE_CRTC_MODE, - "id", i, + "id", (uint64_t)i, "info", crtc_mode_info, NULL); @@ -569,7 +569,7 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, MetaCrtc *crtc; crtc = g_object_new (META_TYPE_CRTC_TEST, - "id", i + 1, + "id", (uint64_t)i + 1, "gpu", test_get_gpu (), NULL); @@ -676,7 +676,7 @@ create_monitor_test_setup (MonitorTestCaseSetup *setup, setup->outputs[i].panel_orientation_transform; output = g_object_new (META_TYPE_OUTPUT_TEST, - "id", i, + "id", (uint64_t)i, "gpu", test_get_gpu (), "info", output_info, NULL); -- 2.21.3
View Attachment As Raw
Actions:
View
Attachments on
bug 26942
:
11748
|
11749
| 11751