Bug#1020516: i386: nothing but a blinking underscore at the top left
Hello Karo, dear Maintainer,
I undusted my own "AMD Athlon(tm)" machine and got a current bookworm/testing on it.
And could reproduce the assert shown in seat0-greeter.log.
It took some time, but I guess I found now the chain of events
that lead to lightdm-gtk-greeter not starting up.
At [1] the dri driver "nouveau_dri.so" gets tested if usable.
That file is again linked to libz3.so.4, which uses in its
static initializers this "pxor %xmm0,%xmm0" instruction.
This pollutes the FPU registers, making it looking like there
are some values at the FPU stack.
This FPU register stack occupation stays and a few more stack
positions get used until in [2] a "fld1" instructions wants to
store another value at the FPU stack, which looks as it could not
work as there are already too many values.
Therefore the "_gtk_css_ease_value_new_cubic_bezier: assertion 'x1 <= 1.0' failed"
gets printed and the function returns a NULL pointer.
Now in [3] the function _gtk_css_array_value_new receives the NULL
pointer which causes the message "_gtk_css_array_value_new: assertion 'content != NULL' failed".
This returns now also a NULL pointer.
And therefore finally the function gtk_css_style_property_register
asserts, because it cannot accept the NULL as initial_value:
"gtk_css_style_property_register: assertion failed: (initial_value != NULL)".
Some how it looks like this "pxor %xmm0,%xmm0" instruction
does not influence the FPU register stack at more modern CPUs [5].
So this bug seems to again boil down to libz3-4 using sse/sse2 instructions,
even when just the static variables get initialized on shared object loading.
Kind regards,
Bernhard
[1]
(gdb) finish
Run till exit from #0 0xb3a8a9d0 in operator new(unsigned int) () from /lib/i386-linux-gnu/libstdc++.so.6
__static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at ./src/util/memory_manager.cpp:39
39 in ./src/util/memory_manager.cpp
1: x/i $pc
=> 0xa85672de <_GLOBAL__sub_I_memory_manager.cpp(void)+62>: pxor %xmm0,%xmm0
(gdb) info float
R7: Empty 0x3fff8000000000000000
R6: Empty 0x400be698000000000000
R5: Empty 0xbfff8000000000000000
R4: Empty 0x00000000000000000000
R3: Empty 0x00000000000000000000
R2: Empty 0x00000000000000000000
R1: Empty 0x00000000000000000000
=>R0: Empty 0x00000000000000000000
Status Word: 0x0020 PE
TOP: 0
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0xffff
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000
(gdb) bt
#0 __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at ./src/util/memory_manager.cpp:39
#1 _GLOBAL__sub_I_memory_manager.cpp(void) () at ./src/util/memory_manager.cpp:373
#2 0xb7fcdd6b in call_init (env=0x42f180, argv=0xbffffcc4, argc=1, l=<optimized out>) at ./elf/dl-init.c:70
#3 call_init (l=<optimized out>, argc=1, argv=0xbffffcc4, env=0x42f180) at ./elf/dl-init.c:26
#4 0xb7fcde5c in _dl_init (main_map=<optimized out>, argc=1, argv=0xbffffcc4, env=0x42f180) at ./elf/dl-init.c:117
#5 0xb7fd4d97 in call_dl_init (closure=0xbfffe150) at ./elf/dl-open.c:485
#6 0xb6b65934 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:182
#7 0xb7fd4d25 in dl_open_worker (a=0xbfffe298) at ./elf/dl-open.c:808
#8 0xb6b658d7 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208
#9 0xb7fd50c0 in _dl_open (file=0xbfffe56c "/usr/lib/i386-linux-gnu/dri/nouveau_dri.so", mode=-2147483390, caller_dlopen=0xb2ee3885 <loader_open_driver_lib+229>, nsid=<optimized out>, argc=1, argv=0xbffffcc4, env=0x42f180) at ./elf/dl-open.c:886
#10 0xb6a7f848 in dlopen_doit (a=0xbfffe4fc) at ./dlfcn/dlopen.c:56
#11 0xb6b658d7 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208
#12 0xb6b659a0 in __GI__dl_catch_error (objname=0xbfffe4b4, errstring=0xbfffe4b8, mallocedp=0xbfffe4b3, operate=0xb6a7f7d0 <dlopen_doit>, args=0xbfffe4fc) at ./elf/dl-error-skeleton.c:227
#13 0xb7fe1df8 in _rtld_catch_error (objname=0xbfffe4b4, errstring=0xbfffe4b8, mallocedp=0xbfffe4b3, operate=0xb6a7f7d0 <dlopen_doit>, args=0xbfffe4fc) at ./elf/dl-error-skeleton.c:260
#14 0xb6a7f297 in _dlerror_run (operate=<optimized out>, args=<optimized out>) at ./dlfcn/dlerror.c:138
#15 0xb6a7f918 in dlopen_implementation (dl_caller=<optimized out>, mode=258, file=0xbfffe56c "/usr/lib/i386-linux-gnu/dri/nouveau_dri.so") at ./dlfcn/dlopen.c:71
#16 ___dlopen (file=0xbfffe56c "/usr/lib/i386-linux-gnu/dri/nouveau_dri.so", mode=258) at ./dlfcn/dlopen.c:81
#17 0xb2ee3885 in loader_open_driver_lib (driver_name=0x4b29b0 "nouveau", lib_suffix=0xb2ef089c "_dri", search_path_vars=0xb2f0f3c4 <search_path_vars>, default_search_path=0xb2ef0800 "/usr/lib/i386-linux-gnu/dri:\\$${ORIGIN}/dri:/usr/lib/dri", warn_on_fail=true)
at ../src/loader/loader.c:636
#18 0xb2ee3a00 in loader_open_driver (driver_name=0x4b29b0 "nouveau", out_driver_handle=0x46abb4, search_path_vars=0xb2f0f3c4 <search_path_vars>) at ../src/loader/loader.c:679
#19 0xb2ec8f9b in driOpenDriver (driverName=0x4b29b0 "nouveau", out_driver_handle=0x46abb4) at ../src/glx/dri_common.c:87
#20 0xb2ede7fd in dri2CreateScreen (screen=0, priv=0x469020) at ../src/glx/dri2_glx.c:1103
#21 0xb2ed1772 in AllocAndFetchScreenConfigs (priv=0x469020, dpy=0x43d5d0) at ../src/glx/glxext.c:842
#22 __glXInitialize (dpy=0x43d5d0) at ../src/glx/glxext.c:973
#23 0xb2ecde3b in GetGLXPrivScreenConfig (ppsc=<synthetic pointer>, ppriv=<synthetic pointer>, scrn=0, dpy=0x43d5d0) at ../src/glx/glxcmds.c:173
#24 glXQueryServerString (dpy=0x43d5d0, screen=0, name=2) at ../src/glx/glxcmds.c:1366
#25 0xb69595f1 in epoxy_glx_version (dpy=0x43d5d0, screen=0) at ../src/dispatch_glx.c:80
#26 0xb7c6a8bb in gdk_x11_screen_init_gl (screen=0x453008 [GdkX11Screen]) at ../../../../../gdk/x11/gdkglcontext-x11.c:873
#27 0xb7c6ac3f in _gdk_x11_screen_update_visuals_for_gl (screen=0x453008 [GdkX11Screen]) at ../../../../../gdk/x11/gdkglcontext-x11.c:1217
#28 0xb7c73ef7 in _gdk_x11_screen_init_visuals (screen=0x453008 [GdkX11Screen]) at ../../../../../gdk/x11/gdkvisual-x11.c:309
#29 0xb7c70afe in _gdk_x11_screen_new (display=0x44e0e0 [GdkX11Display], screen_number=0) at ../../../../../gdk/x11/gdkscreen-x11.c:1103
#30 0xb7c603d4 in _gdk_x11_display_open (display_name=0x0) at ../../../../../gdk/x11/gdkdisplay-x11.c:1606
#31 0xb7c2fb8d in gdk_display_manager_open_display (manager=0x436e60 [GdkDisplayManager], name=0x0) at ../../../../gdk/gdkdisplaymanager.c:462
#32 0xb7c2e041 in gdk_display_open (display_name=0x0) at ../../../../gdk/gdkdisplay.c:1980
#33 0xb7c24e27 in gdk_display_open_default () at ../../../../gdk/gdk.c:467
#34 0xb743c1d8 in gtk_init_check (argc=0xbffffc10, argv=0xbffffb9c) at ../../../../gtk/gtkmain.c:1110
#35 gtk_init_check (argc=0xbffffc10, argv=0xbffffb9c) at ../../../../gtk/gtkmain.c:1102
#36 0xb743c22c in gtk_init (argc=0xbffffc10, argv=0xbffffb9c) at ../../../../gtk/gtkmain.c:1167
#37 0x00408ed1 in main (argc=<optimized out>, argv=<optimized out>) at lightdm-gtk-greeter.c:2910
(gdb) stepi
0xa85672e2 in std::__mutex_base::__mutex_base (this=0x4ae0d0) at /usr/include/c++/12/bits/std_mutex.h:65
warning: Source file is more recent than executable.
65 constexpr __mutex_base() noexcept = default;
1: x/i $pc
=> 0xa85672e2 <_GLOBAL__sub_I_memory_manager.cpp(void)+66>: movups %xmm0,(%eax)
(gdb) info float
R7: Valid 0x3fff8000000000000000 +1
R6: Valid 0x400be698000000000000 +7379
R5: Valid 0xbfff8000000000000000 -1
R4: Zero 0x00000000000000000000 +0
R3: Zero 0x00000000000000000000 +0
R2: Zero 0x00000000000000000000 +0
R1: Zero 0x00000000000000000000 +0
=>R0: Special 0xffff0000000000000000 Unsupported
Status Word: 0x0020 PE
TOP: 0
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0x0156
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000
(gdb)
$ libtree "/usr/lib/i386-linux-gnu/dri/nouveau_dri.so"
...
├── libLLVM-14.so.1 [ld.so.conf]
│ ├── libz3.so.4 [ld.so.conf]
...
[2]
(gdb) stepi
154 g_return_val_if_fail (x1 <= 1.0, NULL);
1: x/i $pc
=> 0xb73647eb <_gtk_css_ease_value_new_cubic_bezier+43>: fld1
2: $st0 = 0.25
3: $st1 = 1
(gdb) info float
R7: Zero 0x00000000000000000000 +0
R6: Valid 0x3ffbccccccccccccd000 +0.1000000000000000056
R5: Valid 0x3ffd8000000000000000 +0.25
R4: Valid 0x3fff8000000000000000 +1
=>R3: Valid 0x3ffd8000000000000000 +0.25
R2: Zero 0x00000000000000000000 +0
R1: Zero 0x00000000000000000000 +0
R0: Special 0xffff0000000000000000 Unsupported
Status Word: 0x1861 IE PE SF
TOP: 3
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0x4016
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000
(gdb) stepi
0xb73647ed 154 g_return_val_if_fail (x1 <= 1.0, NULL);
1: x/i $pc
=> 0xb73647ed <_gtk_css_ease_value_new_cubic_bezier+45>: fcomi %st(1),%st
2: $st0 = -nan(0xc000000000000000)
3: $st1 = 0.25
(gdb) info float
R7: Zero 0x00000000000000000000 +0
R6: Valid 0x3ffbccccccccccccd000 +0.1000000000000000056
R5: Valid 0x3ffd8000000000000000 +0.25
R4: Valid 0x3fff8000000000000000 +1
R3: Valid 0x3ffd8000000000000000 +0.25
=>R2: Special 0xffffc000000000000000 Real Indefinite (QNaN)
R1: Zero 0x00000000000000000000 +0
R0: Special 0xffff0000000000000000 Unsupported
Status Word: 0x1261 IE PE SF C1
TOP: 2
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0x4026
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000
(gdb) bt
#0 0xb73647ed in _gtk_css_ease_value_new_cubic_bezier (x1=0.25, y1=0.10000000000000001, x2=0.25, y2=1) at ../../../../gtk/gtkcsseasevalue.c:154
#1 0xb739222a in _gtk_css_style_property_init_properties () at ../../../../gtk/gtkcssstylepropertyimpl.c:1722
#2 0xb74f3b97 in _gtk_style_property_init_properties () at ../../../../gtk/gtkstyleproperty.c:231
#3 _gtk_style_property_init_properties () at ../../../../gtk/gtkstyleproperty.c:222
#4 _gtk_style_property_lookup (name=0x19b8910 "padding") at ../../../../gtk/gtkstyleproperty.c:273
#5 0xb737f0ec in parse_declaration (ruleset=0xbfe42f14, scanner=0x19e19a8) at ../../../../gtk/gtkcssprovider.c:1422
#6 parse_declarations (ruleset=<optimized out>, scanner=<optimized out>) at ../../../../gtk/gtkcssprovider.c:1583
#7 parse_ruleset (scanner=<optimized out>) at ../../../../gtk/gtkcssprovider.c:1615
#8 parse_statement (scanner=<optimized out>) at ../../../../gtk/gtkcssprovider.c:1644
#9 parse_stylesheet (scanner=<optimized out>) at ../../../../gtk/gtkcssprovider.c:1660
#10 gtk_css_provider_load_internal (css_provider=0x197fd10 [GtkCssProvider], parent=parent@entry=0x19e0050, file=file@entry=0x19d3740, text=<optimized out>, error=0x0) at ../../../../gtk/gtkcssprovider.c:1787
#11 0xb737f6f9 in parse_import (scanner=0x19e0050) at ../../../../gtk/gtkcssprovider.c:1053
#12 parse_at_keyword (scanner=0x19e0050) at ../../../../gtk/gtkcssprovider.c:1301
#13 parse_statement (scanner=0x19e0050) at ../../../../gtk/gtkcssprovider.c:1642
#14 parse_stylesheet (scanner=<optimized out>) at ../../../../gtk/gtkcssprovider.c:1660
#15 gtk_css_provider_load_internal (css_provider=css_provider@entry=0x197fd10 [GtkCssProvider], parent=parent@entry=0x0, file=file@entry=0x19d3320, text=<optimized out>, error=0x0) at ../../../../gtk/gtkcssprovider.c:1787
#16 0xb738062c in gtk_css_provider_load_from_file (css_provider=0x197fd10 [GtkCssProvider], file=0x19d3320, error=0x0) at ../../../../gtk/gtkcssprovider.c:1890
#17 0xb73807b9 in gtk_css_provider_load_from_resource (css_provider=0x197fd10 [GtkCssProvider], resource_path=0x19815e0 "/org/gtk/libgtk/theme/Adwaita/gtk.css") at ../../../../gtk/gtkcssprovider.c:1962
#18 0xb7380b5d in _gtk_css_provider_load_named (provider=0x197fd10 [GtkCssProvider], name=0x19ce670 "Adwaita", variant=0x0) at ../../../../gtk/gtkcssprovider.c:2145
#19 0xb74d3abf in settings_update_theme (settings=settings@entry=0x19ad0e8 [GtkSettings]) at ../../../../gtk/gtksettings.c:3321
#20 0xb74d6ab7 in settings_init_style (settings=0x19ad0e8 [GtkSettings]) at ../../../../gtk/gtksettings.c:1910
#21 gtk_settings_create_for_display (display=<optimized out>) at ../../../../gtk/gtksettings.c:1996
#22 gtk_settings_get_for_display (display=<optimized out>) at ../../../../gtk/gtksettings.c:2028
#23 0xb74d6d31 in gtk_settings_get_default () at ../../../../gtk/gtksettings.c:2064
#24 0xb738c935 in gtk_css_static_style_get_default () at ../../../../gtk/gtkcssstaticstyle.c:163
#25 0xb7376991 in gtk_css_node_init (cssnode=0x19c0140 [GtkCssNode]) at ../../../../gtk/gtkcssnode.c:667
#26 0xb707af36 in g_type_create_instance (type=0x19c84e0 [GtkCssWidgetNode/GtkCssNode]) at ../../../gobject/gtype.c:1925
#27 0xb705e2d6 in g_object_new_internal (class=class@entry=0x19c8b50, params=params@entry=0x0, n_params=n_params@entry=0) at ../../../gobject/gobject.c:2226
#28 0xb705f8f3 in g_object_new_with_properties (object_type=<optimized out>, n_properties=<optimized out>, names=<optimized out>, values=<optimized out>) at ../../../gobject/gobject.c:2387
#29 0xb70603b7 in g_object_new (object_type=0x19c84e0 [GtkCssWidgetNode/GtkCssNode], first_property_name=0x0) at ../../../gobject/gobject.c:2035
#30 0xb7395b32 in gtk_css_widget_node_new (widget=0x19c9230 [GtkWidget]) at ../../../../gtk/gtkcsswidgetnode.c:302
#31 0xb759385b in gtk_widget_init (instance=0x19c9230 [GtkWidget], g_class=0x19bcdc0) at ../../../../gtk/gtkwidget.c:4472
#32 0xb707af36 in g_type_create_instance (type=0x19bccf0 [GtkWindow/GtkBin/GtkContainer/GtkWidget/GInitiallyUnowned]) at ../../../gobject/gtype.c:1925
#33 0xb705e2d6 in g_object_new_internal (class=class@entry=0x19bcdc0, params=params@entry=0xbfe434dc, n_params=n_params@entry=1) at ../../../gobject/gobject.c:2226
#34 0xb705fe4a in g_object_new_valist (object_type=<optimized out>, first_property_name=<optimized out>, var_args=<optimized out>) at ../../../gobject/gobject.c:2563
#35 0xb7060399 in g_object_new (object_type=0x19bccf0 [GtkWindow/GtkBin/GtkContainer/GtkWidget/GInitiallyUnowned], first_property_name=0xb765c10f "type") at ../../../gobject/gobject.c:2038
#36 0xb75b348d in gtk_window_new (type=GTK_WINDOW_TOPLEVEL) at ../../../../gtk/gtkwindow.c:2334
#37 0x0044c02e in main (argc=<optimized out>, argv=<optimized out>) at lightdm-gtk-greeter.c:2917
[3]
(gdb) list
1721 _gtk_css_array_value_new (_gtk_css_number_value_new (0, GTK_CSS_S)));
1722 gtk_css_style_property_register ("transition-timing-function",
1723 GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION,
1724 G_TYPE_NONE,
1725 0,
1726 0,
1727 transition_timing_function_parse,
1728 NULL,
1729 NULL,
1730 _gtk_css_array_value_new (
1731 _gtk_css_ease_value_new_cubic_bezier (0.25, 0.1, 0.25, 1.0)));
1732 gtk_css_style_property_register ("transition-delay",
[4]
(gdb) cont
Continuing.
Thread 1 "lightdm-gtk-gre" received signal SIGABRT, Aborted.
0xb7f49559 in __kernel_vsyscall ()
1: x/i $pc
=> 0xb7f49559 <__kernel_vsyscall+9>: pop %ebp
2: $st0 = <invalid float value>
3: $st1 = 0
(gdb) bt 10
#0 0xb7f49559 in __kernel_vsyscall ()
#1 0xb6a85ec7 in __pthread_kill_implementation (threadid=threadid@entry=3046353216, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:43
#2 0xb6a85f3b in __pthread_kill_internal (signo=6, threadid=3046353216) at ./nptl/pthread_kill.c:78
#3 0xb6a36b41 in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26
#4 0xb6a20262 in __GI_abort () at ./stdlib/abort.c:79
#5 0xb6cc5eb5 in g_assertion_message (domain=0xb75fa047 "Gtk", file=0xb762448c "../../../../gtk/gtkcssstylepropertyimpl.c", line=87, func=0xb76245a0 <__func__.0> "gtk_css_style_property_register", message=0x19b2a40 "assertion failed: (initial_value != NULL)") at ../../../glib/gtestutils.c:3256
#6 0xb6d2862c in g_assertion_message_expr (domain=0xb75fa047 "Gtk", file=0xb762448c "../../../../gtk/gtkcssstylepropertyimpl.c", line=87, func=0xb76245a0 <__func__.0> "gtk_css_style_property_register", expr=0xb76242e8 "initial_value != NULL") at ../../../glib/gtestutils.c:3282
#7 0xb7390c48 in gtk_css_style_property_register (name=name@entry=0xb7623c4b "transition-timing-function", expected_id=expected_id@entry=68, value_type=value_type@entry=0x4 [void], flags=0, affects=0, parse_value=0xb738f5d0 <transition_timing_function_parse>, query_value=0x0, assign_value=0x0, initial_value=0x0) at ../../../../gtk/gtkcssstylepropertyimpl.c:89
#8 0xb739225e in _gtk_css_style_property_init_properties () at ../../../../gtk/gtkcssstylepropertyimpl.c:1722
#9 0xb74f3b97 in _gtk_style_property_init_properties () at ../../../../gtk/gtkstyleproperty.c:231
(More stack frames follow...)
[5]
(VM running at "AMD Ryzen 7 1700" with -cpu host)
(gdb)
std::__mutex_base::__mutex_base (this=0x40ebb0) at /usr/include/c++/12/bits/std_mutex.h:65
warning: Source file is more recent than executable.
65 constexpr __mutex_base() noexcept = default;
1: x/i $pc
=> 0xb67672de <_GLOBAL__sub_I_memory_manager.cpp(void)+62>: pxor %xmm0,%xmm0
(gdb) info float
R7: Empty 0x00000000000000000000
R6: Empty 0x00000000000000000000
R5: Empty 0x00000000000000000000
R4: Empty 0x00000000000000000000
R3: Empty 0x00000000000000000000
R2: Empty 0x00000000000000000000
R1: Empty 0x00000000000000000000
=>R0: Empty 0x00000000000000000000
Status Word: 0x0000
TOP: 0
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0xffff
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000
(gdb) nexti
0xb67672e2 65 constexpr __mutex_base() noexcept = default;
1: x/i $pc
=> 0xb67672e2 <_GLOBAL__sub_I_memory_manager.cpp(void)+66>: movups %xmm0,(%eax)
(gdb) info float
R7: Empty 0x00000000000000000000
R6: Empty 0x00000000000000000000
R5: Empty 0x00000000000000000000
R4: Empty 0x00000000000000000000
R3: Empty 0x00000000000000000000
R2: Empty 0x00000000000000000000
R1: Empty 0x00000000000000000000
=>R0: Empty 0x00000000000000000000
Status Word: 0x0000
TOP: 0
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0xffff
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000
Reply to: