Package: python-gtk2
Version: 2.24.0-3+b1
Severity: normal

Hi.

Thanks for your work on python-gtk2. Unfortunately I encounter
conditions that make python crash. Please try to execute this snippet:

---
import gtk

buf = gtk.TextBuffer()
gtk.clipboard_get().wait_for_rich_text(buf)
---

Doing so I encounter a segmentation fault. Looking with gdb (the code
snippet is in file test.py in my environment):

> giovanni@amalgama:/tmp$ gdb python
> GNU gdb (GDB) 7.6.2 (Debian 7.6.2-1.1)
> Copyright (C) 2013 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 "x86_64-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /usr/bin/python2.7...Reading symbols from 
> /usr/lib/debug/usr/bin/python2.7...done.
> done.
> (gdb) run test.py
> Starting program: /usr/bin/python test.py
> warning: Could not load shared library symbols for linux-vdso.so.1.
> Do you need "set solib-search-path" or "set sysroot"?
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00007ffff529e369 in IA__gtk_clipboard_wait_for_rich_text 
> (clipboard=0xcb3810, buffer=0x2, format=0x7fffffffdd60, 
> length=0x7fffffffdd68) at /tmp/buildd/gtk+2.0-2.24.23/gtk/gtkclipboard.c:1429
> 1429  /tmp/buildd/gtk+2.0-2.24.23/gtk/gtkclipboard.c: File o directory non 
> esistente.
> (gdb) bt
> #0  0x00007ffff529e369 in IA__gtk_clipboard_wait_for_rich_text 
> (clipboard=0xcb3810, buffer=0x2, format=0x7fffffffdd60, 
> length=0x7fffffffdd68) at /tmp/buildd/gtk+2.0-2.24.23/gtk/gtkclipboard.c:1429
> #1  0x00007ffff58417ce in ?? () from 
> /usr/lib/python2.7/dist-packages/gtk-2.0/gtk/_gtk.so
> #2  0x000000000050887d in call_function (oparg=<optimized out>, 
> pp_stack=0x7fffffffdec0) at ../Python/ceval.c:4020
> #3  PyEval_EvalFrameEx (f=f@entry=Frame 0x7ffff7fe1c20, for file test.py, 
> line 5, in <module> (), throwflag=throwflag@entry=0) at ../Python/ceval.c:2666
> #4  0x0000000000576f9c in PyEval_EvalCodeEx (closure=0x0, defcount=0, 
> defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=<optimized out>, 
> globals=<optimized out>, co=<optimized out>) at ../Python/ceval.c:3252
> #5  PyEval_EvalCode (co=0x7ffff7ee9b30, globals=<optimized out>, 
> locals=<optimized out>) at ../Python/ceval.c:667
> #6  0x0000000000469884 in run_mod (mod=<optimized out>, filename=<optimized 
> out>, 
>     globals={'__builtins__': <module at remote 0x7ffff7fb8b08>, '__file__': 
> 'test.py', 'gtk': <module at remote 0x7ffff7ea77f8>, '__package__': None, 
> 'GPollableInputStream': <type at remote 0xa97820>, 'GInitiallyUnowned': 
> <GObjectMeta(__gtype__=<gobject.GType at remote 0x7fffed113810>, 
> __doc__=<gobject.GObject.__doc__ at remote 0x7ffff7ec8090>, __module__='gtk') 
> at remote 0xb271e0>, '__name__': '__main__', 'GPollableOutputStream': <type 
> at remote 0xa9f9b0>, 'GFileDescriptorBased': <type at remote 0xa9e170>, 
> 'buf': <gtk.TextBuffer at remote 0x7fffecbdd6e0>, '__doc__': None}, 
>     locals={'__builtins__': <module at remote 0x7ffff7fb8b08>, '__file__': 
> 'test.py', 'gtk': <module at remote 0x7ffff7ea77f8>, '__package__': None, 
> 'GPollableInputStream': <type at remote 0xa97820>, 'GInitiallyUnowned': 
> <GObjectMeta(__gtype__=<gobject.GType at remote 0x7fffed113810>, 
> __doc__=<gobject.GObject.__doc__ at remote 0x7ffff7ec8090>, __module__='gtk') 
> at remote 0xb271e0>, '__name__': '__main__', 'GPollableOutputStream': <type 
> at remote 0xa9f9b0>, 'GFileDescriptorBased': <type at remote 0xa9e170>, 
> 'buf': <gtk.TextBuffer at remote 0x7fffecbdd6e0>, '__doc__': None}, 
> flags=<optimized out>, arena=<optimized out>) at ../Python/pythonrun.c:1370
> #7  0x0000000000469c04 in PyRun_FileExFlags (fp=fp@entry=0x9ee390, 
> filename=filename@entry=0x7fffffffe554 "test.py", start=start@entry=257, 
>     globals=globals@entry={'__builtins__': <module at remote 0x7ffff7fb8b08>, 
> '__file__': 'test.py', 'gtk': <module at remote 0x7ffff7ea77f8>, 
> '__package__': None, 'GPollableInputStream': <type at remote 0xa97820>, 
> 'GInitiallyUnowned': <GObjectMeta(__gtype__=<gobject.GType at remote 
> 0x7fffed113810>, __doc__=<gobject.GObject.__doc__ at remote 0x7ffff7ec8090>, 
> __module__='gtk') at remote 0xb271e0>, '__name__': '__main__', 
> 'GPollableOutputStream': <type at remote 0xa9f9b0>, 'GFileDescriptorBased': 
> <type at remote 0xa9e170>, 'buf': <gtk.TextBuffer at remote 0x7fffecbdd6e0>, 
> '__doc__': None}, 
>     locals=locals@entry={'__builtins__': <module at remote 0x7ffff7fb8b08>, 
> '__file__': 'test.py', 'gtk': <module at remote 0x7ffff7ea77f8>, 
> '__package__': None, 'GPollableInputStream': <type at remote 0xa97820>, 
> 'GInitiallyUnowned': <GObjectMeta(__gtype__=<gobject.GType at remote 
> 0x7fffed113810>, __doc__=<gobject.GObject.__doc__ at remote 0x7ffff7ec8090>, 
> __module__='gtk') at remote 0xb271e0>, '__name__': '__main__', 
> 'GPollableOutputStream': <type at remote 0xa9f9b0>, 'GFileDescriptorBased': 
> <type at remote 0xa9e170>, 'buf': <gtk.TextBuffer at remote 0x7fffecbdd6e0>, 
> '__doc__': None}, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffe090) 
> at ../Python/pythonrun.c:1356
> #8  0x000000000046a809 in PyRun_SimpleFileExFlags (fp=fp@entry=0x9ee390, 
> filename=<optimized out>, filename@entry=0x7fffffffe554 "test.py", 
> closeit=closeit@entry=1, flags=flags@entry=0x7fffffffe090) at 
> ../Python/pythonrun.c:948
> #9  0x000000000046a905 in PyRun_AnyFileExFlags (fp=fp@entry=0x9ee390, 
> filename=filename@entry=0x7fffffffe554 "test.py", closeit=closeit@entry=1, 
> flags=flags@entry=0x7fffffffe090) at ../Python/pythonrun.c:752
> #10 0x000000000046b46e in Py_Main (argc=<optimized out>, argv=0x7fffffffe248) 
> at ../Modules/main.c:640
> #11 0x00007ffff6f15b45 in __libc_start_main (main=0x46b52c <main>, argc=2, 
> argv=0x7fffffffe248, init=<optimized out>, fini=<optimized out>, 
> rtld_fini=<optimized out>, stack_end=0x7fffffffe238) at libc-start.c:287
> #12 0x0000000000579514 in _start ()
> (gdb) 

It seems that python-gtk2 is faulty here, because in frame #0 buffer is
set to 0x2, which is hardly a legitimate value for a pointer. The crash
line is actually inspecting buffer:

> g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), NULL);

(in some other cases I've seen buffer set to 0x3, but cannot reproduce
it anymore)

Thanks, Giovanni.

--- System information. ---
Architecture: amd64
Kernel:       Linux 3.14-1-amd64

Debian Release: jessie/sid
  500 unstable        ftp.ch.debian.org
  500 stable          dl.google.com
  500 sid             linux.dropbox.com
    1 experimental    ftp.ch.debian.org

--- Package information. ---
Depends                     (Version) | Installed
=====================================-+-===============
python                       (<< 2.8) | 2.7.5-5
python                  (>= 2.6.6-7~) | 2.7.5-5
python-numpy             (>= 1:1.6.1) | 1:1.8.1-1
python-numpy-abi9                     |
libatk1.0-0               (>= 1.12.4) |
libc6                      (>= 2.2.5) |
libcairo2                  (>= 1.2.4) |
libfontconfig1             (>= 2.9.0) |
libfreetype6               (>= 2.2.1) |
libgdk-pixbuf2.0-0        (>= 2.22.0) |
libglib2.0-0              (>= 2.24.0) |
libgtk2.0-0               (>= 2.24.0) |
libpango1.0-0             (>= 1.22.0) |
python-cairo           (>= 1.0.2-1.1) |
python-gobject-2          (>= 2.21.3) |


Package's Recommends field is empty.

Suggests             (Version) | Installed
==============================-+-===========
python-gtk2-doc                | 2.24.0-3
-- 
Giovanni Mascellani <[email protected]>
PhD Student - Scuola Normale Superiore, Pisa, Italy

http://poisson.phc.unipi.it/~mascellani

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to