Description of problem: I start Gimp and create a new image, then select Brush and click on the image area to draw a line, and then gimp exit. Version-Release number of selected component (if applicable): gimp-2.4.0-0.rc1.1.fc8 How reproducible: Every time Steps to Reproduce: 1. Start Gimp 2. Create new image 3. Select Brush and draw a line. Crash. Additional info: This is the output from the console: [francesco@localhost ~]$ gimp --sync Gtk-Message: Failed to load module "gnomebreakpad": libgnomebreakpad.so: cannot open shared object file: No such file or directory (gimp:3197): Gtk-WARNING **: Debug: missing action debug-menu Gdk-ERROR **: The program 'gimp' received an X Window System error. This probably reflects a bug in the program. The error was 'BadWindow (invalid Window parameter)'. (Details: serial 30179 error_code 3 request_code 39 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.) aborting... gimp: terminated: Abortito (script-fu:3198): LibGimpBase-WARNING **: script-fu: gimp_wire_read(): error
Bug-buddy doesn't fire for some reason. Usually it means that the program intercepts SIGABRT and SIGSEGV, can this be cancelled in gimp? I can catch the abort() with gdb, but it always happens under a grab, and so gdb must run from text console. I do not know how to save a trace in such a case.
(In reply to comment #1) > Bug-buddy doesn't fire for some reason. Usually it means that the program > intercepts SIGABRT and SIGSEGV, can this be cancelled in gimp? In file gimp-2.4.0-rc1/app/main.c, line 636, there is this function: static void gimp_init_signal_handlers (void) { /* Handle fatal signals */ /* these are handled by gimp_terminate() */ gimp_signal_private (SIGHUP, gimp_sigfatal_handler, 0); gimp_signal_private (SIGINT, gimp_sigfatal_handler, 0); gimp_signal_private (SIGQUIT, gimp_sigfatal_handler, 0); gimp_signal_private (SIGABRT, gimp_sigfatal_handler, 0); gimp_signal_private (SIGTERM, gimp_sigfatal_handler, 0); if (stack_trace_mode != GIMP_STACK_TRACE_NEVER) { /* these are handled by gimp_fatal_error() */ gimp_signal_private (SIGBUS, gimp_sigfatal_handler, 0); gimp_signal_private (SIGSEGV, gimp_sigfatal_handler, 0); gimp_signal_private (SIGFPE, gimp_sigfatal_handler, 0); } gimp_signal_private (SIGPIPE, SIG_IGN, 0); gimp_signal_private (SIGCHLD, SIG_DFL, SA_RESTART); } I changed this line: gimp_signal_private (SIGABRT, gimp_sigfatal_handler, 0); to: gimp_signal_private (SIGABRT, SIG_DFL, 0); in order to ignore SIGABRT, but bug buddy doesn't fire anyway.
All, please try gimp-2.4.0-0.rc2.1.fc8, it shouldn't have that problem anymore. About the SEGV handling, you might want to try this option on the cmdline: --stack-trace-mode=<mode> Debug in case of a crash (never|query|always)
I regret to inform, gimp-2.4.0-0.rc2.1.fc8 does not fix the crash. However, I captured a backtrace of gimp --sync, using gdb|tee.
Created attachment 190571 [details] Crash stack trace of gimp --sync
Hm, just verified this here on x86_64. Errors in gimp_int_combobox_set_active() shouldn't realistically SIGABRT -- this functions just finds an entry in the GtkComboBox this widget is derived from and runs _set_active() there. I'd say it's likely a bug in gtk/gdk or even X. Changing the component to gtk2.
I just tried it out with gtk2-2.12.0-1.fc8, to no avail.
I believe we need this patch in libX11: http://gitweb.freedesktop.org/?p=xorg/lib/libX11.git;a=blobdiff;h=dac1bfc4c0303b96f235b62bb5617064704ff424;hp=2aa6c1a6b4a901765a80c3c91e51e9deae9e0427;hb=8e76bcf3cafda85058ce5f35f1f81929f4772f72;f=src/GetMoEv.c
Built that patch into rawhide as libX11-1.1.2-3.fc8. Can someone test that and verify that it's the right fix?
great that works for me (tested on i386) thanks
Ok, I upgrade to libX11-1.1.2-3.fc8 and now Gimp works! (Tested on AthlonXP)