[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#909015: abiword: Crashes on startup with GLib-ERROR



Hello Joachim,
I got the idea that I should be able to produce a broken setup too ;-)

And yes, just by installing nvidia-driver into my test VM I get the crash below.

It is caused by trying to retrieve GL_NUM_EXTENSIONS.
This fails due to our broken setup and leaves the
variable that should store it uninitialized
and is then used for the alloction attempt.

I was not able to reproduce it that way in a
Buster/testing VM - abiword just opens after two libEGL warnings.
Therefore it looks like upstream have fixed this already.

Kind regards,
Bernhard



Stretch: ###########
$ abiword
pci id for fd 5: 1234:1111, driver (null)

(abiword:30203): GLib-ERROR **: /build/glib2.0-YYXhFA/glib2.0-2.50.3/./glib/gmem.c:100: failed to allocate 4272896292 bytes
Trace/Breakpoint ausgelöst (Speicherabzug geschrieben)



root@debian:~# coredumpctl gdb
...
Core was generated by `abiword'.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0  _g_log_abort (breakpoint=1) at ././glib/gmessages.c:509
509     ././glib/gmessages.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0xb4d8ae40 in _g_log_abort (breakpoint=1) at ././glib/gmessages.c:509
#1  0xb4d8bdd3 in g_log_default_handler (log_domain=0xb4dcff6e "GLib", log_level=6, message=0xb0f00470 "/build/glib2.0-YYXhFA/glib2.0-2.50.3/./glib/gmem.c:100: failed to allocate 4290460004 bytes", unused_data=0x0) at ././glib/gmessages.c:2896
#2  0xb4d8c114 in g_logv (log_domain=0xb4dcff6e "GLib", log_level=G_LOG_LEVEL_ERROR, format=0xb4dd8abc "%s: failed to allocate %u bytes", args=0xbfeecdfc "\204\212ݴd9\273\377\020\227{\267") at ././glib/gmessages.c:1297
#3  0xb4d8c2e5 in g_log (log_domain=0xb4dcff6e "GLib", log_level=G_LOG_LEVEL_ERROR, format=0xb4dd8abc "%s: failed to allocate %u bytes") at ././glib/gmessages.c:1359
#4  0xb4d8a8e0 in g_malloc (n_bytes=4290460004) at ././glib/gmem.c:99
#5  0xb5e4abf6 in _cogl_context_get_gl_extensions (context=0x988688) at cogl-context.c:686
#6  0xb5e46426 in _cogl_driver_update_features (ctx=0x988688, error=0xbfeecfa8) at driver/gl/gl/cogl-driver-gl.c:380
#7  0xb5e8431a in _cogl_winsys_context_init (context=0x988688, error=0xbfeecfa8) at winsys/cogl-winsys-stub.c:110
#8  0xb5e49fe4 in cogl_context_new (display=0x9829d0, error=0xbfeecfa8) at cogl-context.c:237
#9  0xb5f6b12f in clutter_backend_do_real_create_context (error=0xbfeecfa4, driver_id=<optimized out>, backend=0x985c18 [ClutterBackendGdk]) at clutter-backend.c:331
#10 0xb5f6b12f in clutter_backend_real_create_context (backend=0x985c18 [ClutterBackendGdk], error=0xbfeed108) at clutter-backend.c:414
#11 0xb5f8563d in _clutter_feature_init (error=0xbfeed108) at clutter-feature.c:107
#12 0xb5f96c1c in clutter_init_real (error=error@entry=0xbfeed108) at clutter-main.c:1406
#13 0xb5f96e41 in post_parse_hook (context=0x990170, group=0x98eb80, data=0x0, error=0xbfeed108) at clutter-main.c:1572
#14 0xb4d91760 in g_option_context_parse (context=0x990170, argc=0xbfeed254, argv=0xbfeed17c, error=0xbfeed108) at ././glib/goption.c:2175
#15 0xb5f97ced in clutter_parse_args (error=0xbfeed104, argv=0xbfeed17c, argc=0xbfeed254) at clutter-main.c:1792
#16 0xb5f97ced in clutter_init (argc=0xbfeed254, argv=0xbfeed17c) at clutter-main.c:1854
#17 0xb60f65f2 in gtk_clutter_init (argc=0xbfeed254, argv=0xbfeed17c) at ./gtk-clutter-util.c:233
#18 0xb7241a1f in AP_UnixApp::main(char const*, int, char**) (szAppName=0x42e710 "abiword", argc=<optimized out>, argv=<optimized out>) at ap_UnixApp.cpp:1301
#19 0x0042e50e in main(int, char**) (argc=1, argv=0xbfeed314) at ../src/wp/main/gtk/UnixMain.cpp:30



(gdb) bt full
...
#5  0xb5e4abf6 in _cogl_context_get_gl_extensions (context=0x988688) at cogl-context.c:686
        num_extensions = -1074868648
        i = <optimized out>
        env_disabled_extensions = <optimized out>
        ret = <optimized out>
...




(gdb) list _cogl_context_get_gl_extensions
...
681         {
682           int num_extensions, i;
683
684           context->glGetIntegerv (GL_NUM_EXTENSIONS, &num_extensions);
685
686           ret = g_malloc (sizeof (char *) * (num_extensions + 1));                <--
687




Buster/testing: ###########
benutzer@debian:~$ abiword
pci id for fd 5: 1234:1111, driver (null)
libEGL warning: DRI3: No driver found
libEGL warning: DRI2: failed to authenticate
apt update
apt install mc htop systemd-coredump xserver-xorg xdm openbox xterm dpkg-dev devscripts strace gdb valgrind nvidia-driver abiword abiword-dbgsym libabiword-3.0-dbgsym libclutter-gtk-1.0-0-dbgsym libclutter-1.0-dbg libglib2.0-0-dbg libcogl20-dbgsym libgtk-3-0-dbgsym
apt build-dep cogl


systemctl start xdm


mkdir cogl/orig -p
cd    cogl/orig
apt source cogl
cd ../..

mkdir libclutter-1.0-0/orig -p
cd    libclutter-1.0-0/orig
apt source libclutter-1.0-0
cd ../..


export DISPLAY=:0
#export CLUTTER_ENABLE_DIAGNOSTIC=1
#export CLUTTER_DEBUG=1
#not compiled in


$ abiword
pci id for fd 5: 1234:1111, driver (null)

(abiword:30203): GLib-ERROR **: /build/glib2.0-YYXhFA/glib2.0-2.50.3/./glib/gmem.c:100: failed to allocate 4272896292 bytes
Trace/Breakpoint ausgelöst (Speicherabzug geschrieben)


root@debian:~# coredumpctl gdb
           PID: 25203 (abiword)
           UID: 1000 (benutzer)
           GID: 1000 (benutzer)
        Signal: 5 (TRAP)
     Timestamp: Wed 2018-09-19 05:15:04 CEST (1min 0s ago)
  Command Line: abiword
    Executable: /usr/bin/abiword
 Control Group: /user.slice/user-1000.slice/session-4.scope
          Unit: session-4.scope
         Slice: user-1000.slice
       Session: 4
     Owner UID: 1000 (benutzer)
       Boot ID: 3dfb0c4544b641ed869c13bc1e3da6bc
    Machine ID: 3e718c50031d49a28612735bafe74301
      Hostname: debian
       Storage: /var/lib/systemd/coredump/core.abiword.1000.3dfb0c4544b641ed869c13bc1e3da6bc.25203.1537326904000000000000.lz4
       Message: Process 25203 (abiword) of user 1000 dumped core.
                
                Stack trace of thread 25203:
                #0  0x00000000b4d8ae40 n/a (libglib-2.0.so.0)
                #1  0x00000000b4d8bdd3 g_log_default_handler (libglib-2.0.so.0)
                #2  0x00000000b4d8c114 g_logv (libglib-2.0.so.0)
                #3  0x00000000b4d8c2e5 g_log (libglib-2.0.so.0)
                #4  0x00000000b4d8a8e0 g_malloc (libglib-2.0.so.0)
                #5  0x00000000b5e4abf6 n/a (libcogl.so.20)
                #6  0x00000000b5e46426 n/a (libcogl.so.20)
                #7  0x00000000b5e8431a n/a (libcogl.so.20)
                #8  0x00000000b5e49fe4 cogl_context_new (libcogl.so.20)
                #9  0x00000000b5f6b12f n/a (libclutter-1.0.so.0)
                #10 0x00000000b5f8563d n/a (libclutter-1.0.so.0)
                #11 0x00000000b5f96c1c n/a (libclutter-1.0.so.0)
                #12 0x00000000b5f96e41 n/a (libclutter-1.0.so.0)
                #13 0x00000000b4d91760 g_option_context_parse (libglib-2.0.so.0)
                #14 0x00000000b5f97ced clutter_init (libclutter-1.0.so.0)
                #15 0x00000000b60f65f2 gtk_clutter_init (libclutter-gtk-1.0.so.0)
                #16 0x00000000b7241a1f _ZN10AP_UnixApp4mainEPKciPPc (libabiword-3.0.so)
                #17 0x000000000042e50e main (abiword)
                #18 0x00000000b6ef6286 __libc_start_main (libc.so.6)
                #19 0x000000000042e54c _start (abiword)

GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/abiword...Reading symbols from /usr/lib/debug/.build-id/89/f2a379e8af2085d0160dea2310cc7ca14b0c28.debug...done.
done.
[New LWP 25203]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `abiword'.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0  0xb4d8ae40 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
(gdb) bt
#0  0xb4d8ae40 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#1  0xb4d8bdd3 in g_log_default_handler () from /lib/i386-linux-gnu/libglib-2.0.so.0
#2  0xb4d8c114 in g_logv () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0xb4d8c2e5 in g_log () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0xb4d8a8e0 in g_malloc () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0xb5e4abf6 in ?? () from /usr/lib/i386-linux-gnu/libcogl.so.20
#6  0xb5e46426 in ?? () from /usr/lib/i386-linux-gnu/libcogl.so.20
#7  0xb5e8431a in ?? () from /usr/lib/i386-linux-gnu/libcogl.so.20
#8  0xb5e49fe4 in cogl_context_new () from /usr/lib/i386-linux-gnu/libcogl.so.20
#9  0xb5f6b12f in ?? () from /usr/lib/i386-linux-gnu/libclutter-1.0.so.0
#10 0xb5f8563d in ?? () from /usr/lib/i386-linux-gnu/libclutter-1.0.so.0
#11 0xb5f96c1c in ?? () from /usr/lib/i386-linux-gnu/libclutter-1.0.so.0
#12 0xb5f96e41 in ?? () from /usr/lib/i386-linux-gnu/libclutter-1.0.so.0
#13 0xb4d91760 in g_option_context_parse () from /lib/i386-linux-gnu/libglib-2.0.so.0
#14 0xb5f97ced in clutter_init () from /usr/lib/i386-linux-gnu/libclutter-1.0.so.0
#15 0xb60f65f2 in gtk_clutter_init (argc=0xbfeed254, argv=0xbfeed17c) at ./gtk-clutter-util.c:233
#16 0xb7241a1f in AP_UnixApp::main (szAppName=0x42e710 "abiword", argc=<optimized out>, argv=<optimized out>) at ap_UnixApp.cpp:1301
#17 0x0042e50e in main (argc=1, argv=0xbfeed314) at ../src/wp/main/gtk/UnixMain.cpp:30









Core was generated by `abiword'.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0  _g_log_abort (breakpoint=1) at ././glib/gmessages.c:509
509     ././glib/gmessages.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0xb4d8ae40 in _g_log_abort (breakpoint=1) at ././glib/gmessages.c:509
#1  0xb4d8bdd3 in g_log_default_handler (log_domain=0xb4dcff6e "GLib", log_level=6, message=0xb0f00470 "/build/glib2.0-YYXhFA/glib2.0-2.50.3/./glib/gmem.c:100: failed to allocate 4290460004 bytes", unused_data=0x0) at ././glib/gmessages.c:2896
#2  0xb4d8c114 in g_logv (log_domain=0xb4dcff6e "GLib", log_level=G_LOG_LEVEL_ERROR, format=0xb4dd8abc "%s: failed to allocate %u bytes", args=0xbfeecdfc "\204\212ݴd9\273\377\020\227{\267")
    at ././glib/gmessages.c:1297
#3  0xb4d8c2e5 in g_log (log_domain=0xb4dcff6e "GLib", log_level=G_LOG_LEVEL_ERROR, format=0xb4dd8abc "%s: failed to allocate %u bytes") at ././glib/gmessages.c:1359
#4  0xb4d8a8e0 in g_malloc (n_bytes=4290460004) at ././glib/gmem.c:99
#5  0xb5e4abf6 in _cogl_context_get_gl_extensions (context=0x988688) at cogl-context.c:686
#6  0xb5e46426 in _cogl_driver_update_features (ctx=0x988688, error=0xbfeecfa8) at driver/gl/gl/cogl-driver-gl.c:380
#7  0xb5e8431a in _cogl_winsys_context_init (context=0x988688, error=0xbfeecfa8) at winsys/cogl-winsys-stub.c:110
#8  0xb5e49fe4 in cogl_context_new (display=0x9829d0, error=0xbfeecfa8) at cogl-context.c:237
#9  0xb5f6b12f in clutter_backend_do_real_create_context (error=0xbfeecfa4, driver_id=<optimized out>, backend=0x985c18 [ClutterBackendGdk]) at clutter-backend.c:331
#10 0xb5f6b12f in clutter_backend_real_create_context (backend=0x985c18 [ClutterBackendGdk], error=0xbfeed108) at clutter-backend.c:414
#11 0xb5f8563d in _clutter_feature_init (error=0xbfeed108) at clutter-feature.c:107
#12 0xb5f96c1c in clutter_init_real (error=error@entry=0xbfeed108) at clutter-main.c:1406
#13 0xb5f96e41 in post_parse_hook (context=0x990170, group=0x98eb80, data=0x0, error=0xbfeed108) at clutter-main.c:1572
#14 0xb4d91760 in g_option_context_parse (context=0x990170, argc=0xbfeed254, argv=0xbfeed17c, error=0xbfeed108) at ././glib/goption.c:2175
#15 0xb5f97ced in clutter_parse_args (error=0xbfeed104, argv=0xbfeed17c, argc=0xbfeed254) at clutter-main.c:1792
#16 0xb5f97ced in clutter_init (argc=0xbfeed254, argv=0xbfeed17c) at clutter-main.c:1854
#17 0xb60f65f2 in gtk_clutter_init (argc=0xbfeed254, argv=0xbfeed17c) at ./gtk-clutter-util.c:233
#18 0xb7241a1f in AP_UnixApp::main(char const*, int, char**) (szAppName=0x42e710 "abiword", argc=<optimized out>, argv=<optimized out>) at ap_UnixApp.cpp:1301
#19 0x0042e50e in main(int, char**) (argc=1, argv=0xbfeed314) at ../src/wp/main/gtk/UnixMain.cpp:30



#5  0xb5e4abf6 in _cogl_context_get_gl_extensions (context=0x988688) at cogl-context.c:686
        num_extensions = -1074868648
        i = <optimized out>
        env_disabled_extensions = <optimized out>
        ret = <optimized out>
.






gdb -q --args abiword

set height 0
set width 0
set pagination off
directory /home/benutzer/libclutter-1.0-0/orig/clutter-1.0-1.26.0+dfsg/clutter
directory /home/benutzer/cogl/orig/cogl-1.22.2/cogl
run



(gdb) list _cogl_context_get_gl_extensions
671     char **
672     _cogl_context_get_gl_extensions (CoglContext *context)
673     {
674       const char *env_disabled_extensions;
675       char **ret;
676
677       /* In GL 3, querying GL_EXTENSIONS is deprecated so we have to build
678        * the array using glGetStringi instead */
679     #ifdef HAVE_COGL_GL
680       if (context->driver == COGL_DRIVER_GL3)
681         {
682           int num_extensions, i;
683
684           context->glGetIntegerv (GL_NUM_EXTENSIONS, &num_extensions);
685
686           ret = g_malloc (sizeof (char *) * (num_extensions + 1));                <--
687
688           for (i = 0; i < num_extensions; i++)
689             {
690               const char *ext =
691                 (const char *) context->glGetStringi (GL_EXTENSIONS, i);
692               ret[i] = g_strdup (ext);
693             }
694
695           ret[num_extensions] = NULL;
696         }
697       else
698     #endif
699         {
700           const char *all_extensions =
701             (const char *) context->glGetString (GL_EXTENSIONS);
702
703           ret = g_strsplit (all_extensions, " ", 0 /* max tokens */);
704         }
705
706       if ((env_disabled_extensions = g_getenv ("COGL_DISABLE_GL_EXTENSIONS"))
707           || _cogl_config_disable_gl_extensions)
708         {
709           char **split_env_disabled_extensions;
710           char **split_conf_disabled_extensions;
711           char **src, **dst;
712
713           if (env_disabled_extensions)
714             split_env_disabled_extensions =
715               g_strsplit (env_disabled_extensions,
716                           ",",
717                           0 /* no max tokens */);
718           else
719             split_env_disabled_extensions = NULL;
720
721           if (_cogl_config_disable_gl_extensions)
722             split_conf_disabled_extensions =
723               g_strsplit (_cogl_config_disable_gl_extensions,
724                           ",",
725                           0 /* no max tokens */);
726           else
727             split_conf_disabled_extensions = NULL;
728
729           for (dst = ret, src = ret;
730                *src;
731                src++)
732             {
733               char **d;
734
735               if (split_env_disabled_extensions)
736                 for (d = split_env_disabled_extensions; *d; d++)
737                   if (!strcmp (*src, *d))
738                     goto disabled;
739               if (split_conf_disabled_extensions)
740                 for (d = split_conf_disabled_extensions; *d; d++)
741                   if (!strcmp (*src, *d))
742                     goto disabled;
743
744               *(dst++) = *src;
745               continue;
746
747             disabled:
748               g_free (*src);
749               continue;
750             }
751
752           *dst = NULL;
753
754           if (split_env_disabled_extensions)
755             g_strfreev (split_env_disabled_extensions);
756           if (split_conf_disabled_extensions)
757             g_strfreev (split_conf_disabled_extensions);
758         }
759
760       return ret;
761     }
762




cp orig/ try2 -a
cd try2/cogl-1.22.2/
git init
git add .
git commit -m "Initial commit."



0001*


############
############
############




Thread 1 "abiword" received signal SIGSEGV, Segmentation fault.
0xb7743024 in __GI_____strtoull_l_internal (nptr=0x0, endptr=0xbffff22c, base=10, group=0, loc=0xb78c4bc0 <_nl_C_locobj>) at ./strtol_l.c:293
293     ./strtol_l.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0xb7743024 in __GI_____strtoull_l_internal (nptr=0x0, endptr=0xbffff22c, base=10, group=0, loc=0xb78c4bc0 <_nl_C_locobj>) at ./strtol_l.c:293
#1  0xb774364a in __GI___strtoull_l (nptr=0x0, endptr=0xbffff22c, base=10, loc=0xb78c4bc0 <_nl_C_locobj>) at ./strtol_l.c:548
#2  0xb55d9366 in g_ascii_strtoull (nptr=0x0, endptr=0xbffff22c, base=10) at ././glib/gstrfuncs.c:1165
#3  0xb667d501 in _cogl_gpu_info_parse_version_string (version_string=<optimized out>, tail=tail@entry=0xbffff268, version_ret=version_ret@entry=0x0, n_components=2) at cogl-gpu-info.c:90
#4  0xb667d5d6 in check_mesa_driver_package (strings=0xbffff2b0, version_ret=0x4856c8) at cogl-gpu-info.c:421
#5  0xb667d873 in _cogl_gpu_info_init (ctx=0x485688, gpu=0x4856b8) at cogl-gpu-info.c:527
#6  0xb667bc72 in _cogl_driver_update_features (context=0x485688, error=0xbffff3f8) at driver/gl/gles/cogl-driver-gles.c:284
#7  0xb66b83aa in _cogl_winsys_context_init (context=0x485688, error=0xbffff3f8) at winsys/cogl-winsys-stub.c:110
#8  0xb667e014 in cogl_context_new (display=0x47fb50, error=0xbffff3f8) at cogl-context.c:237
#9  0xb679f12f in clutter_backend_do_real_create_context (error=0xbffff3f4, driver_id=<optimized out>, backend=0x482c18 [ClutterBackendGdk]) at clutter-backend.c:331
#10 0xb679f12f in clutter_backend_real_create_context (backend=0x482c18 [ClutterBackendGdk], error=0xbffff558) at clutter-backend.c:414
#11 0xb67b963d in _clutter_feature_init (error=0xbffff558) at clutter-feature.c:107
#12 0xb67cac1c in clutter_init_real (error=error@entry=0xbffff558) at clutter-main.c:1406
#13 0xb67cae41 in post_parse_hook (context=0x48d170, group=0x48bb80, data=0x0, error=0xbffff558) at clutter-main.c:1572
#14 0xb55c5760 in g_option_context_parse (context=0x48d170, argc=0xbffff6a4, argv=0xbffff5cc, error=0xbffff558) at ././glib/goption.c:2175
#15 0xb67cbced in clutter_parse_args (error=0xbffff554, argv=0xbffff5cc, argc=0xbffff6a4) at clutter-main.c:1792
#16 0xb67cbced in clutter_init (argc=0xbffff6a4, argv=0xbffff5cc) at clutter-main.c:1854
#17 0xb692a5f2 in gtk_clutter_init (argc=0xbffff6a4, argv=0xbffff5cc) at ./gtk-clutter-util.c:233
#18 0xb7a75a1f in AP_UnixApp::main(char const*, int, char**) (szAppName=0x400710 "abiword", argc=<optimized out>, argv=<optimized out>) at ap_UnixApp.cpp:1301
#19 0x0040050e in main(int, char**) (argc=1, argv=0xbffff764) at ../src/wp/main/gtk/UnixMain.cpp:30



(gdb) list _cogl_gpu_info_parse_version_string
77      static CoglBool
78      _cogl_gpu_info_parse_version_string (const char *version_string,
79                                           int n_components,
80                                           const char **tail,
81                                           int *version_ret)
82      {
83        int version = 0;
84        uint64_t part;
85        int i;
86
87        for (i = 0; ; i++)
88          {
89            errno = 0;
90            part = g_ascii_strtoull (version_string,                                <--
91                                     (char **) &version_string,
92                                     10);
93
94            if (errno || part > COGL_VERSION_MAX_COMPONENT_VALUE)
95              return FALSE;
96
97            version |= part << ((2 - i) * COGL_VERSION_COMPONENT_BITS);
98
99            if (i + 1 >= n_components)
100             break;
101
102           if (*version_string != '.')
103             return FALSE;
104
105           version_string++;
106         }
107
108       if (version_ret)
109         *version_ret = version;
110       if (tail)
111         *tail = version_string;
112
113       return TRUE;
114     }


(gdb) list check_mesa_driver_package
411
412     static CoglBool
413     check_mesa_driver_package (const CoglGpuInfoStrings *strings,
414                                int *version_ret)
415     {
416       uint64_t micro_part;
417       const char *v;
418
419       /* The version string should always begin a two-part GL version
420          number */
421       if (!_cogl_gpu_info_parse_version_string (strings->version_string,
422                                                 2, /* n_components */
423                                                 &v, /* tail */
424                                                 NULL /* version_ret */))
425         return FALSE;
426
427       /* In mesa this will be followed optionally by "(Core Profile)" and
428        * then "Mesa" */
429       v = strstr (v, " Mesa ");
430       if (!v)
431         return FALSE;
432
433       v += 6;
434
435       /* Next there will be a version string that is at least two
436          components. On a git devel build the version will be something
437          like "-devel<git hash>" instead */
438       if (!_cogl_gpu_info_parse_version_string (v,
439                                                 2, /* n_components */
440                                                 &v, /* tail */
441                                                 version_ret))
442         return FALSE;
443
444       /* If it is a development build then we'll just leave the micro
445          number as 0 */
446       if (g_str_has_prefix (v, "-devel"))
447         return TRUE;
448
449       /* Otherwise there should be a micro version number */
450       if (*v != '.')
451         return FALSE;
452
453       errno = 0;
454       micro_part = g_ascii_strtoull (v + 1, NULL /* endptr */, 10 /* base */);
455       if (errno || micro_part > COGL_VERSION_MAX_COMPONENT_VALUE)
456         return FALSE;
457
458       *version_ret = COGL_VERSION_ENCODE (COGL_VERSION_GET_MAJOR (*version_ret),
459                                           COGL_VERSION_GET_MINOR (*version_ret),
460                                           micro_part);
461
462       return TRUE;
463     }



0002



############
############
############



(abiword:26352): GLib-CRITICAL **: g_strsplit: assertion 'string != NULL' failed

Thread 1 "abiword" received signal SIGSEGV, Segmentation fault.
0xb7788aea in __GI_strstr (haystack_start=0x0, needle_start=0xb66d5c59 "Intel(R)") at strstr.c:63
63      strstr.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0xb7788aea in __GI_strstr (haystack_start=0x0, needle_start=0xb66d5c59 "Intel(R)") at strstr.c:63
#1  0xb667d23d in match_phrase (string=0x0, phrase=0xb66d5c59 "Intel(R)") at cogl-gpu-info.c:119
#2  0xb667d8b5 in _cogl_gpu_info_init (ctx=0x485658, gpu=0x485688) at cogl-gpu-info.c:545
#3  0xb667bc72 in _cogl_driver_update_features (context=0x485658, error=0xbffff3f8) at driver/gl/gles/cogl-driver-gles.c:284
#4  0xb66b83aa in _cogl_winsys_context_init (context=0x485658, error=0xbffff3f8) at winsys/cogl-winsys-stub.c:110
#5  0xb667e014 in cogl_context_new (display=0x47fb50, error=0xbffff3f8) at cogl-context.c:237
#6  0xb679f12f in clutter_backend_do_real_create_context (error=0xbffff3f4, driver_id=<optimized out>, backend=0x482c18 [ClutterBackendGdk]) at clutter-backend.c:331
#7  0xb679f12f in clutter_backend_real_create_context (backend=0x482c18 [ClutterBackendGdk], error=0xbffff558) at clutter-backend.c:414
#8  0xb67b963d in _clutter_feature_init (error=0xbffff558) at clutter-feature.c:107
#9  0xb67cac1c in clutter_init_real (error=error@entry=0xbffff558) at clutter-main.c:1406
#10 0xb67cae41 in post_parse_hook (context=0x48d108, group=0x48bb38, data=0x0, error=0xbffff558) at clutter-main.c:1572
#11 0xb55c5760 in g_option_context_parse (context=0x48d108, argc=0xbffff6a4, argv=0xbffff5cc, error=0xbffff558) at ././glib/goption.c:2175
#12 0xb67cbced in clutter_parse_args (error=0xbffff554, argv=0xbffff5cc, argc=0xbffff6a4) at clutter-main.c:1792
#13 0xb67cbced in clutter_init (argc=0xbffff6a4, argv=0xbffff5cc) at clutter-main.c:1854
#14 0xb692a5f2 in gtk_clutter_init (argc=0xbffff6a4, argv=0xbffff5cc) at ./gtk-clutter-util.c:233
#15 0xb7a75a1f in AP_UnixApp::main(char const*, int, char**) (szAppName=0x400710 "abiword", argc=<optimized out>, argv=<optimized out>) at ap_UnixApp.cpp:1301
#16 0x0040050e in main(int, char**) (argc=1, argv=0xbffff764) at ../src/wp/main/gtk/UnixMain.cpp:30




(gdb) list _cogl_gpu_info_init                            
509
510     void
511     _cogl_gpu_info_init (CoglContext *ctx,
512                          CoglGpuInfo *gpu)
513     {
514       CoglGpuInfoStrings strings;
515       int i;
516
517       strings.renderer_string = (const char *) ctx->glGetString (GL_RENDERER);
518       strings.version_string = _cogl_context_get_gl_version (ctx);
519       strings.vendor_string = (const char *) ctx->glGetString (GL_VENDOR);
520
521       /* Determine the driver package */
522       for (i = 0; ; i++)
523         {
524           const CoglGpuInfoDriverPackageDescription *description =
525             _cogl_gpu_info_driver_packages + i;
526
527           if (description->check_function (&strings, &gpu->driver_package_version))
528             {
529               gpu->driver_package = description->driver_package;
530               gpu->driver_package_name = description->name;
531               break;
532             }
533         }
534
535       /* Determine the GPU vendor */
536       for (i = 0; ; i++)
537         {
538           const CoglGpuInfoVendorDescription *description =
539             _cogl_gpu_info_vendors + i;
540
541           if (description->check_function (&strings))
542             {
543               int j;
544
545               gpu->vendor = description->vendor;
546               gpu->vendor_name = description->name;
547
548               for (j = 0; ; j++)
549                 {
550                   const CoglGpuInfoArchitectureDescription *architecture =
551                     description->architectures + j;
552
553                   if (architecture->check_function (&strings))
554                     {
555                       gpu->architecture = architecture->architecture;
556                       gpu->architecture_name = architecture->name;
557                       gpu->architecture_flags = architecture->flags;
558                       goto probed;
559                     }
560                 }
561             }
562         }
563
564     probed:
565
566       COGL_NOTE (WINSYS, "Driver package = %s, vendor = %s, architecture = %s\n",
567                  gpu->driver_package_name,
568                  gpu->vendor_name,
569                  gpu->architecture_name);
570
571       /* Determine the driver bugs */
572
573       /* In Mesa the glReadPixels implementation is really slow
574          when using the Intel driver. The Intel
575          driver has a fast blit path when reading into a PBO. Reading into
576          a temporary PBO and then memcpying back out to the application's
577          memory is faster than a regular glReadPixels in this case */
578       if (gpu->vendor == COGL_GPU_INFO_VENDOR_INTEL &&
579           gpu->driver_package == COGL_GPU_INFO_DRIVER_PACKAGE_MESA)
580         gpu->driver_bugs |= COGL_GPU_INFO_DRIVER_BUG_MESA_46631_SLOW_READ_PIXELS;
581     }


(gdb) print description->check_function
$3 = (CoglBool (*)(const CoglGpuInfoStrings *)) 0xb667d340 <check_intel_vendor>


(gdb) list check_intel_vendor
138
139     static CoglBool
140     check_intel_vendor (const CoglGpuInfoStrings *strings)
141     {
142       return match_phrase (strings->renderer_string, "Intel(R)");
143     }


(gdb) list cogl-driver-gles.c:244
240
241     static CoglBool
242     _cogl_driver_update_features (CoglContext *context,
243                                   CoglError **error)
244     {
245       unsigned long private_features
246         [COGL_FLAGS_N_LONGS_FOR_SIZE (COGL_N_PRIVATE_FEATURES)] = { 0 };
247       CoglFeatureFlags flags = 0;
248       char **gl_extensions;
249       int gl_major, gl_minor;
250       int i;
251
252       /* We have to special case getting the pointer to the glGetString
253          function because we need to use it to determine what functions we
254          can expect */
255       context->glGetString =
256         (void *) _cogl_renderer_get_proc_address (context->display->renderer,
257                                                   "glGetString",
258                                                   TRUE);
259
260       gl_extensions = _cogl_context_get_gl_extensions (context);
261
262       if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_WINSYS)))
263         {
264           char *all_extensions = g_strjoinv (" ", gl_extensions);
265
266           COGL_NOTE (WINSYS,
267                      "Checking features\n"
268                      "  GL_VENDOR: %s\n"
269                      "  GL_RENDERER: %s\n"
270                      "  GL_VERSION: %s\n"
271                      "  GL_EXTENSIONS: %s",
272                      context->glGetString (GL_VENDOR),
273                      context->glGetString (GL_RENDERER),
274                      _cogl_context_get_gl_version (context),
275                      all_extensions);
276
277           g_free (all_extensions);
278         }
279
280       context->glsl_major = 1;
281       context->glsl_minor = 0;
282       context->glsl_version_to_use = 100;
283
284       _cogl_gpu_info_init (context, &context->gpu);
285
286       if (!_cogl_get_gl_version (context, &gl_major, &gl_minor))
287         {
288           gl_major = 1;
289           gl_minor = 1;
290         }
291
292       _cogl_feature_check_ext_functions (context,
293                                          gl_major,
294                                          gl_minor,
295                                          gl_extensions);
296
297     #ifdef HAVE_COGL_GLES
298       if (context->driver == COGL_DRIVER_GLES1)
299         {
300           int max_clip_planes;
301           GE( context, glGetIntegerv (GL_MAX_CLIP_PLANES, &max_clip_planes) );
302           if (max_clip_planes >= 4)
303             COGL_FLAGS_SET (private_features,
304                             COGL_PRIVATE_FEATURE_FOUR_CLIP_PLANES, TRUE);
305         }
306     #endif
307
308       if (context->driver == COGL_DRIVER_GLES2)
309         {
310           flags |= COGL_FEATURE_SHADERS_GLSL | COGL_FEATURE_OFFSCREEN;
311           /* Note GLES 2 core doesn't support mipmaps for npot textures or
312            * repeat modes other than CLAMP_TO_EDGE. */
313           flags |= COGL_FEATURE_TEXTURE_NPOT_BASIC;
314           flags |= COGL_FEATURE_DEPTH_RANGE;
315           COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_GLSL, TRUE);
316           COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_OFFSCREEN, TRUE);
317           COGL_FLAGS_SET (context->features,
318                           COGL_FEATURE_ID_TEXTURE_NPOT_BASIC, TRUE);
319           COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_DEPTH_RANGE, TRUE);
320           COGL_FLAGS_SET (context->features,
321                           COGL_FEATURE_ID_MIRRORED_REPEAT, TRUE);
322           COGL_FLAGS_SET (context->features,
323                           COGL_FEATURE_ID_PER_VERTEX_POINT_SIZE, TRUE);
324
325           COGL_FLAGS_SET (private_features,
326                           COGL_PRIVATE_FEATURE_BLEND_CONSTANT, TRUE);
327         }
328       else if (context->driver == COGL_DRIVER_GLES1)
329         {
330           COGL_FLAGS_SET (private_features, COGL_PRIVATE_FEATURE_GL_FIXED, TRUE);
331           COGL_FLAGS_SET (private_features, COGL_PRIVATE_FEATURE_ALPHA_TEST, TRUE);
332           COGL_FLAGS_SET (private_features,
333                           COGL_PRIVATE_FEATURE_BUILTIN_POINT_SIZE_UNIFORM, TRUE);
334         }
335
336       COGL_FLAGS_SET (private_features, COGL_PRIVATE_FEATURE_VBOS, TRUE);
337       COGL_FLAGS_SET (private_features, COGL_PRIVATE_FEATURE_ANY_GL, TRUE);
338       COGL_FLAGS_SET (private_features, COGL_PRIVATE_FEATURE_ALPHA_TEXTURES, TRUE);
339
340       /* Both GLES 1.1 and GLES 2.0 support point sprites in core */
341       flags |= COGL_FEATURE_POINT_SPRITE;
342       COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_POINT_SPRITE, TRUE);
343
344       if (context->glGenRenderbuffers)
345         {
346           flags |= COGL_FEATURE_OFFSCREEN;
347           COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_OFFSCREEN, TRUE);
348         }
349
350       if (context->glBlitFramebuffer)
351         COGL_FLAGS_SET (private_features,
352                         COGL_PRIVATE_FEATURE_OFFSCREEN_BLIT, TRUE);
353
354       if (_cogl_check_extension ("GL_OES_element_index_uint", gl_extensions))
355         {
356           flags |= COGL_FEATURE_UNSIGNED_INT_INDICES;
357           COGL_FLAGS_SET (context->features,
358                           COGL_FEATURE_ID_UNSIGNED_INT_INDICES, TRUE);
359         }
360
361       if (_cogl_check_extension ("GL_OES_depth_texture", gl_extensions))
362         {
363           flags |= COGL_FEATURE_DEPTH_TEXTURE;
364           COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_DEPTH_TEXTURE, TRUE);
365         }
366
367       if (_cogl_check_extension ("GL_OES_texture_npot", gl_extensions))
368         {
369           flags |= (COGL_FEATURE_TEXTURE_NPOT |
370                     COGL_FEATURE_TEXTURE_NPOT_BASIC |
371                     COGL_FEATURE_TEXTURE_NPOT_MIPMAP |
372                     COGL_FEATURE_TEXTURE_NPOT_REPEAT);
373           COGL_FLAGS_SET (context->features,
374                           COGL_FEATURE_ID_TEXTURE_NPOT, TRUE);
375           COGL_FLAGS_SET (context->features,
376                           COGL_FEATURE_ID_TEXTURE_NPOT_BASIC, TRUE);
377           COGL_FLAGS_SET (context->features,
378                           COGL_FEATURE_ID_TEXTURE_NPOT_MIPMAP, TRUE);
379           COGL_FLAGS_SET (context->features,
380                           COGL_FEATURE_ID_TEXTURE_NPOT_REPEAT, TRUE);
381         }
382       else if (_cogl_check_extension ("GL_IMG_texture_npot", gl_extensions))
383         {
384           flags |= (COGL_FEATURE_TEXTURE_NPOT_BASIC |
385                     COGL_FEATURE_TEXTURE_NPOT_MIPMAP);
386           COGL_FLAGS_SET (context->features,
387                           COGL_FEATURE_ID_TEXTURE_NPOT_BASIC, TRUE);
388           COGL_FLAGS_SET (context->features,
389                           COGL_FEATURE_ID_TEXTURE_NPOT_MIPMAP, TRUE);
390         }
391
392       if (context->glTexImage3D)
393         {
394           flags |= COGL_FEATURE_TEXTURE_3D;
395           COGL_FLAGS_SET (context->features, COGL_FEATURE_ID_TEXTURE_3D, TRUE);
396         }
397
398       if (context->glMapBuffer)
399         {
400           /* The GL_OES_mapbuffer extension doesn't support mapping for
401              read */
402           flags |= COGL_FEATURE_MAP_BUFFER_FOR_WRITE;
403           COGL_FLAGS_SET (context->features,
404                           COGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE, TRUE);
405         }
406
407       if (context->glMapBufferRange)
408         {
409           /* MapBufferRange in ES3+ does support mapping for read */
410           flags |= (COGL_FEATURE_MAP_BUFFER_FOR_WRITE |
411                     COGL_FEATURE_MAP_BUFFER_FOR_READ);
412           COGL_FLAGS_SET(context->features,
413                          COGL_FEATURE_ID_MAP_BUFFER_FOR_WRITE, TRUE);
414           COGL_FLAGS_SET(context->features,
415                          COGL_FEATURE_ID_MAP_BUFFER_FOR_READ, TRUE);
416         }
417
418       if (context->glEGLImageTargetTexture2D)
419         COGL_FLAGS_SET (private_features,
420                         COGL_PRIVATE_FEATURE_TEXTURE_2D_FROM_EGL_IMAGE, TRUE);
421
422       if (_cogl_check_extension ("GL_OES_packed_depth_stencil", gl_extensions))
423         COGL_FLAGS_SET (private_features,
424                         COGL_PRIVATE_FEATURE_OES_PACKED_DEPTH_STENCIL, TRUE);
425
426       if (_cogl_check_extension ("GL_EXT_texture_format_BGRA8888", gl_extensions))
427         COGL_FLAGS_SET (private_features,
428                         COGL_PRIVATE_FEATURE_TEXTURE_FORMAT_BGRA8888, TRUE);
429
430       if (_cogl_check_extension ("GL_EXT_unpack_subimage", gl_extensions))
431         COGL_FLAGS_SET (private_features,
432                         COGL_PRIVATE_FEATURE_UNPACK_SUBIMAGE, TRUE);
433
434       /* A nameless vendor implemented the extension, but got the case wrong
435        * per the spec. */
436       if (_cogl_check_extension ("GL_OES_EGL_sync", gl_extensions) ||
437           _cogl_check_extension ("GL_OES_egl_sync", gl_extensions))
438         COGL_FLAGS_SET (private_features, COGL_PRIVATE_FEATURE_OES_EGL_SYNC, TRUE);
439
440       if (_cogl_check_extension ("GL_EXT_texture_rg", gl_extensions))
441         COGL_FLAGS_SET (context->features,
442                         COGL_FEATURE_ID_TEXTURE_RG,
443                         TRUE);
444
445       /* Cache features */
446       for (i = 0; i < G_N_ELEMENTS (private_features); i++)
447         context->private_features[i] |= private_features[i];
448       context->feature_flags |= flags;
449
450       g_strfreev (gl_extensions);
451
452       return TRUE;
453     }

(gdb) print gl_extensions
$5 = (char **) 0x0


(gdb) list cogl-winsys-stub.c:107
104
105     static CoglBool
106     _cogl_winsys_context_init (CoglContext *context, CoglError **error)
107     {
108       context->winsys = &_cogl_winsys_stub_dummy_ptr;
109
110       if (!_cogl_context_update_features (context, error))
111         return FALSE;
112
113       memset (context->winsys_features, 0, sizeof (context->winsys_features));
114
115       return TRUE;
116     }


0004


#################
#################
#################


(abiword:9955): GLib-CRITICAL **: g_strsplit: assertion 'string != NULL' failed

(abiword:9955): Clutter-CRITICAL **: Unable to initialize Clutter: Initialisierung des Clutter-Backends nicht möglich: Keine Treiber verfügbar.

** (abiword:9955): WARNING **: clutter failed -3, get a life.
[New Thread 0xaa3ccb40 (LWP 10010)]
[New Thread 0xaabcdb40 (LWP 10011)]

Thread 1 "abiword" received signal SIGSEGV, Segmentation fault.
_cogl_renderer_handle_native_event (renderer=0x0, event=0xbfffeffc) at cogl-renderer.c:730
730     cogl-renderer.c: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0  0xb667f91d in _cogl_renderer_handle_native_event (renderer=0x0, event=0xbfffeffc) at cogl-renderer.c:730
#1  0xb66c432c in cogl_xlib_renderer_handle_event (renderer=0x0, event=0xbfffeffc) at cogl-xlib-renderer.c:594
#2  0xb6773c9f in cogl_gdk_filter (xevent=0xbfffeffc, event=0x8d7ed8, data=0x482c18) at gdk/clutter-backend-gdk.c:146
#3  0xb5b2dd64 in gdk_event_apply_filters (xevent=xevent@entry=0xbfffeffc, event=event@entry=0x8d7ed8, window=window@entry=0x0) at ././gdk/x11/gdkeventsource.c:79
#4  0xb5b2e09d in gdk_event_source_translate_event (xevent=0xbfffeffc, event_source=0x468820) at ././gdk/x11/gdkeventsource.c:198
#5  0xb5b2e09d in _gdk_x11_display_queue_events (display=0x4510d0 [GdkX11Display]) at ././gdk/x11/gdkeventsource.c:341
#6  0xb5af5c97 in gdk_display_get_event (display=0x4510d0 [GdkX11Display]) at ././gdk/gdkdisplay.c:438
#7  0xb5b2ddf5 in gdk_event_source_dispatch (source=0x468820, callback=0x0, user_data=0x0) at ././gdk/x11/gdkeventsource.c:363
#8  0xb55b94e9 in g_main_dispatch (context=0x467050) at ././glib/gmain.c:3203
#9  0xb55b94e9 in g_main_context_dispatch (context=0x467050) at ././glib/gmain.c:3856
#10 0xb55b9789 in g_main_context_iterate (context=context@entry=0x467050, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3929
#11 0xb55b9854 in g_main_context_iteration (context=0x467050, may_block=1) at ././glib/gmain.c:3990
#12 0xb5dfc4c0 in gtk_main_iteration () at ././gtk/gtkmain.c:1413
#13 0xb7d704bd in XAP_UnixFrameImpl::_nullUpdate() const (this=0x56f638) at xap_UnixFrameImpl.cpp:1317
#14 0xb7b6e241 in XAP_Frame::nullUpdate() const (this=0x59c4f8) at ../../../../src/af/xap/xp/xap_Frame.h:125
#15 0xb7b6e241 in PD_Document::_importFile(_GsfInput*, int, bool, bool, bool, char const*) (this=0x953d90, input=0x9570f0 [GsfInputMemory], ieft=0, markClean=true, bImportStylesFirst=false, bIsImportFile=true, impProps=0x0) at pd_Document.cpp:785
#16 0xb7b6ea6d in PD_Document::_importFile(char const*, int, bool, bool, bool, char const*) (this=0x953d90, szFilename=0x8d1b78 "file:///usr/share/abiword-3.0/templates/normal.awt-de_DE", ieft=0, markClean=true, bImportStylesFirst=false, bIsImportFile=true, impProps=0x0) at pd_Document.cpp:739
#17 0xb7b6ead2 in PD_Document::importFile(char const*, int, bool, bool, char const*) (this=0x953d90, szFilename=0x8d1b78 "file:///usr/share/abiword-3.0/templates/normal.awt-de_DE", ieft=0, markClean=true, bImportStylesFirst=false, impProps=0x0) at pd_Document.cpp:716
#18 0xb7b6ce7f in PD_Document::newDocument() (this=<optimized out>) at pd_Document.cpp:1072
#19 0xb7c89f02 in AP_Frame::_loadDocument(char const*, int, bool) (this=<optimized out>, szFilename=<optimized out>, ieft=<optimized out>, createNew=false) at ap_Frame.cpp:208
#20 0xb7c8a136 in AP_Frame::loadDocument(char const*, int, bool) (this=<optimized out>, szFilename=<optimized out>, ieft=<optimized out>, createNew=false) at ap_Frame.cpp:475
#21 0xb7c88907 in AP_Frame::loadDocument(char const*, int) (this=0x59c4f8, szFilename=0x0, ieft=0) at ap_Frame.cpp:513
#22 0xb7c34667 in AP_App::openCmdLineFiles(AP_Args const*) (this=0x42b1d8, args=0xbffff5d4) at ap_App.cpp:70
#23 0xb7a75c36 in AP_UnixApp::main(char const*, int, char**) (szAppName=<optimized out>, argc=<optimized out>, argv=<optimized out>) at ap_UnixApp.cpp:1383
#24 0x0040050e in main(int, char**) (argc=1, argv=0xbffff764) at ../src/wp/main/gtk/UnixMain.cpp:30


#################
#################
#################


# Buster/testing

apt update
apt install mc htop systemd-coredump xserver-xorg xdm openbox xterm mesa-utils dpkg-dev devscripts strace gdb valgrind nvidia-driver abiword abiword-dbgsym libabiword-3.0-dbgsym libclutter-gtk-1.0-0-dbgsym libclutter-1.0-0-dbgsym libglib2.0-0-dbgsym libcogl20-dbgsym libgtk-3-0-dbgsym

systemctl start xdm

export DISPLAY=:0

benutzer@debian:~$ abiword
pci id for fd 5: 1234:1111, driver (null)
libEGL warning: DRI3: No driver found
libEGL warning: DRI2: failed to authenticate

(abiword:27439): Gtk-CRITICAL **: 13:03:19.758: gtk_render_background: assertion 'GTK_IS_STYLE_CONTEXT (context)' failed

(abiword:27439): Gtk-CRITICAL **: 13:03:19.758: gtk_render_frame: assertion 'GTK_IS_STYLE_CONTEXT (context)' failed


Reply to: