[racket-dev] Unlucky with Racket 6.0 (1/2)

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Thu Mar 13 09:21:02 EDT 2014

I've pushed a repair for the crash.

The crash was due to a hack that extracts a private child from a Gtk
widget that implements a `choice%`. The child is extracted so that
callbacks can be attached to the child widget. The reference count on
the extracted child wasn't managed correctly, and so an implementation
or configuration of the widget that changes the child (as appears to be
the case on Kubuntu) could cause a crash.

Although the repair should avoid crashes, it is not complete. The
intended signals are not caught if the child is changed, so some GUI
elements do not work correctly. For example, the font menu is not
populated in the DrRacket preferences dialog. I'll continue to work on
that, but it will take more time.

At Wed, 12 Mar 2014 22:45:42 +0000, Paulo Matos wrote:
> On 12/03/14 22:38, Sam Tobin-Hochstadt wrote:
> > On Wed, Mar 12, 2014 at 6:35 PM, Paulo Matos <paulo at matos-sorge.com> wrote:
> >>
> >> So, I decide to run the gracket command under gdb but now it segfaults
> >> immediately without displaying drracket window.
> >> $ gdb --args /home/pmatos/local-install/racket-6.0/bin/../lib/gracket -N
> >> local-install/racket-6.0/bin/drracket -J DrRacket -l- drracket/drracket.rkt
> >
> >
> > Racket uses page faults to manage memory, so you need to do:
> >
> >      (gdb) handle SIGSEGV nostop noprint
> >
> > and then continue, and if there's an error, it will halt in `abort()`.
> >
> 
> Thanks, you're right. Got there when entered the Preferences screen:
> Program received signal SIGABRT, Aborted.
> 0x00007ffff7323f77 in __GI_raise (sig=sig at entry=6)
>      at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> 56      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
> (gdb) bt
> #0  0x00007ffff7323f77 in __GI_raise (sig=sig at entry=6)
>      at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> #1  0x00007ffff73275e8 in __GI_abort () at abort.c:90
> #2  0x000000000068927e in fault_handler ()
> #3  <signal handler called>
> #4  0x00007ffff2e595b9 in g_type_check_instance ()
>     from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #5  0x00007ffff2e4e3f7 in g_signal_connect_data ()
>     from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
> #6  0x0000000000687548 in ffi_call_unix64 ()
> #7  0x0000000000686e8d in ffi_call ()
> #8  0x000000000067896c in ?? ()
> 
> Not very useful. Need to setup drracket with debugging to understand this.
> 
> -- 
> PMatos
> 
> _________________________
>   Racket Developers list:
>   http://lists.racket-lang.org/dev

Posted on the dev mailing list.