Comment 10 for bug 896836

Revision history for this message
John McPherson (john-mcpherson) wrote :

The simplest combination of modules I can find that causes the segfault (presumably due to the mixture of static and dynamic bindings for the gtk module described above) is:

python -c 'import Onboard; import gtk '

/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:42: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
  from gtk import _gtk

** (python:7386): CRITICAL **: pyg_register_boxed: assertion `boxed_type != 0' failed
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:42: Warning: cannot register existing type `GdkDevice'
  from gtk import _gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:42: Warning: g_type_get_qdata: assertion `node != NULL' failed
  from gtk import _gtk
zsh: segmentation fault python -c 'import Onboard; import gtk '

After removing the 'onboard' package, "pydoc -k" will get much further through the list of packages when searching, but now eventually hangs for me. strace shows it seems to be a race condition on a futex in atk:

stat("libgdk-3.so.0.la", 0x7fffe38aff70) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/girepository-1.0", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
getdents(5, /* 98 entries */, 32768) = 4152
open("/usr/lib/girepository-1.0/Atk-1.0.typelib", O_RDONLY) = 14
fstat(14, {st_mode=S_IFREG|0644, st_size=63688, ...}) = 0
mmap(NULL, 63688, PROT_READ, MAP_PRIVATE, 14, 0) = 0x7f23dabdf000
close(14) = 0
getdents(5, /* 0 entries */, 32768) = 0
close(5) = 0
munmap(0x7f23dabdf000, 63688) = 0
stat("/usr/lib/python2.7/dist-packages/gi/overrides/Atk", 0x7fffe38a9120) = -1 ENOENT (No such file or directory)
open("/usr/lib/python2.7/dist-packages/gi/overrides/Atk.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/python2.7/dist-packages/gi/overrides/Atkmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/python2.7/dist-packages/gi/overrides/Atk.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/python2.7/dist-packages/gi/overrides/Atk.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("libatk-1.0.so.0", 0x7fffe38aded0) = -1 ENOENT (No such file or directory)
stat("libatk-1.0.so.0.so", 0x7fffe38aded0) = -1 ENOENT (No such file or directory)
stat("libatk-1.0.so.0.la", 0x7fffe38aded0) = -1 ENOENT (No such file or directory)
futex(0x171de84, FUTEX_WAIT_PRIVATE, 1, NULL