Opened 8 weeks ago

Closed 8 weeks ago

#16303 closed defect (fixed)

Crash while drawing a clipped bitmap on Linux

Reported by: Mithrandir Owned by: PC
Priority: normal Milestone:
Component: wxGTK Version: 3.0.0
Keywords: bitmap BadPixmap Cc:
Blocked By: Blocking:
Patch: no

Description

Crash occurs while drawing a clipped bitmap. This issue is reproduced with the "image" sample on RHEL 5.10 x86_64 under VNC Gnome session.
It is regression against the previous stable release 2.8.12.

Steps to reproduce:
Compile wxWidgets and the "image" sample with default parameters.
Run the sample and scroll down.

image output:
The program 'image' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadPixmap (invalid Pixmap parameter)'.

(Details: serial 24173 error_code 4 request_code 56 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;

that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)

gdb output:
(gdb) break gdk_x_error()
Function "gdk_x_error()" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (gdk_x_error()) pending.
(gdb) c
Continuing.

Program exited with code 01.
(gdb) bt
No stack.

...

(gdb) catch syscall 60
Catchpoint 1 (syscall 'exit' [60])
(gdb) catch syscall 231
Catchpoint 2 (syscall 'exit_group' [231])
(gdb) c
Continuing.

Catchpoint 2 (call to syscall 'exit_group'), 0x00000036bae9a6af in _exit () from /lib64/libc.so.6
(gdb) bt
#0 0x00000036bae9a6af in _exit () from /lib64/libc.so.6
#1 0x00000036bae334c5 in exit () from /lib64/libc.so.6
#2 0x00000036c3e4ed11 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#3 0x00000036bbe49e46 in _XError () from /usr/lib64/libX11.so.6
#4 0x00000036bbe4b8c9 in _XReply () from /usr/lib64/libX11.so.6
#5 0x00000036bbe434ea in XSync () from /usr/lib64/libX11.so.6
#6 0x00000036bbe4368b in ?? () from /usr/lib64/libX11.so.6
#7 0x00000036bce09a1a in XShmPutImage () from /usr/lib64/libXext.so.6
#8 0x00000036c3e42854 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#9 0x00000036c3e2c809 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#10 0x00000036c3e2ce29 in gdk_draw_rgb_image_dithalign () from /usr/lib64/libgdk-x11-2.0.so.0
#11 0x00000036c3e1d9ef in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#12 0x00000036c3e41e03 in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#13 0x00000036c3e3389d in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#14 0x00002ba27cc7d0d6 in wxWindowDCImpl::DoBlit (this=0x17346570, xdest=<value optimized out>, ydest=<value optimized out>,

width=<value optimized out>, height=<value optimized out>, source=<value optimized out>, xsrc=0, ysrc=0, logical_func=wxCOPY, useMask=true,
xsrcMask=-1, ysrcMask=-1) at ./src/gtk/dcclient.cpp:1372

#15 0x000000000041b27d in Blit (this=0x1724aeb0) at ../../include/wx/dc.h:1249
#16 MyCanvas::OnPaint (this=0x1724aeb0) at ./canvas.cpp:616
#17 0x00002ba27cbd7a07 in wxEvtHandler::ProcessEventIfMatchesId (entry=<value optimized out>, handler=0x3c, event=...) at ./src/common/event.cpp:1389
#18 0x00002ba27cbdbcfc in wxEventHashTable::HandleEvent (this=<value optimized out>, event=..., self=0x1724aeb0) at ./src/common/event.cpp:990
#19 0x00002ba27cbdbd72 in wxEvtHandler::TryHereOnly (this=0x1724aeb0, event=...) at ./src/common/event.cpp:1581
#20 0x00002ba27cbdbe03 in TryBeforeAndHere (this=0x1724aeb0, event=...) at ./include/wx/event.h:3671
#21 wxEvtHandler::ProcessEventLocally (this=0x1724aeb0, event=...) at ./src/common/event.cpp:1514
#22 0x00002ba27cbdbe65 in wxEvtHandler::ProcessEvent (this=0x1724aeb0, event=...) at ./src/common/event.cpp:1487
#23 0x00002ba27cec845b in wxScrollHelperEvtHandler::ProcessEvent (this=0x1724b4d0, event=...) at ./src/generic/scrlwing.cpp:202
#24 0x00002ba27cc72e23 in wxWindow::GTKSendPaintEvents (this=0x1724aeb0, region=<value optimized out>) at ./src/gtk/window.cpp:3975
#25 0x00002ba27cc7332c in expose_event (gdk_event=0x7fff2d558320, win=0x1724aeb0) at ./src/gtk/window.cpp:257
#26 0x00000036c472fffd in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#27 0x00000036c060b08a in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#28 0x00000036c061b2ed in ?? () from /lib64/libgobject-2.0.so.0
#29 0x00000036c061c516 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#30 0x00000036c061c923 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#31 0x00000036c482d7ae in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#32 0x00000036c472a8b0 in gtk_main_do_event () from /usr/lib64/libgtk-x11-2.0.so.0
#33 0x00000036c3e320da in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#34 0x00000036c3e32277 in gdk_window_process_updates () from /usr/lib64/libgdk-x11-2.0.so.0
#35 0x00002ba27cc6f254 in wxWindow::Update (this=0x1724aeb0) at ./src/gtk/window.cpp:3813
#36 0x00002ba27cec6951 in wxScrollHelperBase::HandleOnScroll (this=0x1724b140, event=<value optimized out>) at ./src/generic/scrlwing.cpp:544
#37 0x00002ba27cec8509 in wxScrollHelperEvtHandler::ProcessEvent (this=0x1724b4d0, event=...) at ./src/generic/scrlwing.cpp:259
#38 0x00002ba27cc72b92 in gtk_scrollbar_value_changed (range=<value optimized out>, win=0x1724aeb0) at ./src/gtk/window.cpp:1861
#39 0x00000036c060b08a in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#40 0x00000036c061b5cf in ?? () from /lib64/libgobject-2.0.so.0
#41 0x00000036c061c748 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#42 0x00000036c061c923 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#43 0x00000036c47660c5 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#44 0x00000036c060b08a in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#45 0x00000036c061b2ed in ?? () from /lib64/libgobject-2.0.so.0
#46 0x00000036c061c748 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#47 0x00000036c061c923 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#48 0x00000036c4666f5c in gtk_adjustment_value_changed () from /usr/lib64/libgtk-x11-2.0.so.0
#49 0x00000036c47673aa in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#50 0x00000036c472fd52 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#51 0x00000036c060b08a in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#52 0x00000036c061b8e6 in ?? () from /lib64/libgobject-2.0.so.0
#53 0x00000036c061c516 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#54 0x00000036c061c923 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#55 0x00000036c4766131 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#56 0x00000036c47677a5 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#57 0x00000036c472fffd in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#58 0x00000036c060b08a in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#59 0x00000036c061b8e6 in ?? () from /lib64/libgobject-2.0.so.0
#60 0x00000036c061c516 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#61 0x00000036c061c923 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#62 0x00000036c482d7ae in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#63 0x00000036c47296ed in gtk_propagate_event () from /usr/lib64/libgtk-x11-2.0.so.0
#64 0x00000036c472a701 in gtk_main_do_event () from /usr/lib64/libgtk-x11-2.0.so.0
#65 0x00000036c3e4687c in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#66 0x00000036bf62cdb4 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#67 0x00000036bf62fc0d in ?? () from /lib64/libglib-2.0.so.0
#68 0x00000036bf62ff1a in g_main_loop_run () from /lib64/libglib-2.0.so.0
#69 0x00000036c472aa93 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
#70 0x00002ba27cc48d95 in wxGUIEventLoop::DoRun (this=0x1725efe0) at ./src/gtk/evtloop.cpp:65
#71 0x00002ba27ca8ef1c in wxEventLoopBase::Run (this=0x1725efe0) at ./src/common/evtloopcmn.cpp:78
#72 0x00002ba27ca43492 in wxAppConsoleBase::MainLoop (this=<value optimized out>) at ./src/common/appbase.cpp:334
#73 0x00002ba27cad83ed in wxEntry (argc=<value optimized out>, argv=<value optimized out>) at ./src/common/init.cpp:495
#74 0x000000000040de78 in main (argc=2, argv=0x3c) at ./image.cpp:967
(gdb)

Change History (1)

comment:1 Changed 8 weeks ago by PC

  • Owner set to PC
  • Resolution set to fixed
  • Status changed from new to closed

In 76626:

Fix X 'BadPixmap' crash in Blit() with mask when GTK+ <= 2.16, closes #16303

Note: See TracTickets for help on using tickets.