garrigue / lablgtk

LablGTK 2 and 3: an interface to the GIMP Tool Kit
https://garrigue.github.io/lablgtk
Other
89 stars 40 forks source link

Segmentation fault on macOS (Frama-C GUI) #158

Open maroneze opened 1 year ago

maroneze commented 1 year ago

Hello,

When trying to run the Frama-C GUI on macOS, I'm getting a segmentation fault, and I'm not sure where to start debugging.

The issue seemed similar to what happened in CoqIDE, but even with lablgtk.3.1.2, it's still happening.

In case there is something that would seem obvious to you, I'm pasting the trace of running lldb on the compiled frama-c-gui binary. This is from the development version of Frama-C; unfortunately it is currently hard to install the latest stable version in macOS due to an issue (we created a patch but the PR has not yet been merged in opam-repository).

user@host frama-c-dune % lldb frama-c-gui
(lldb) target create "frama-c-gui"
Current executable set to 'frama-c-gui' (x86_64).
(lldb) r
Process 46824 launched: '/Users/framac/.opam/4.13.1/bin/frama-c-gui' (x86_64)
2022-09-14 13:55:48.930599+0200 frama-c-gui[46824:25247885] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=46824
2022-09-14 13:55:48.930663+0200 frama-c-gui[46824:25247885] SecTaskCopyDebugDescription: frama-c-gui[46824]/0#-1 LF=0

(frama-c-gui:46824): Gtk-WARNING **: 13:55:50.689: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node tab owner GtkNotebook)

(frama-c-gui:46824): Gtk-WARNING **: 13:55:50.689: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node arrow owner GtkNotebook)

(frama-c-gui:46824): Gtk-WARNING **: 13:55:50.690: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node arrow owner GtkNotebook)
frama-c-gui was compiled with optimization - stepping may behave oddly; variables may not be available.
Process 46824 stopped
* thread #9, stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
        frame #0: 0x0000000100678a69 frama-c-gui`caml_thread_leave_blocking_section [inlined] caml_thread_restore_runtime_state at st_stubs.c:202:43 [opt]
Target 0: (frama-c-gui) stopped.
(lldb) bt
* thread #9, stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
    * frame #0: 0x0000000100678a69 frama-c-gui`caml_thread_leave_blocking_section [inlined] caml_thread_restore_runtime_state at st_stubs.c:202:43 [opt]
        frame #1: 0x0000000100678a69 frama-c-gui`caml_thread_leave_blocking_section at st_stubs.c:248 [opt]
        frame #2: 0x0000000100684363 frama-c-gui`caml_leave_blocking_section at signals.c:175:3 [opt]
        frame #3: 0x000000010063e082 frama-c-gui`ml_poll(ufds=<unavailable>, nfsd=<unavailable>, timeout=<unavailable>) at ml_glib.c:312:5 [opt]
        frame #4: 0x0000000101829808 libgdk-3.0.dylib`select_thread_func + 227
        frame #5: 0x00007ff815dab4e1 libsystem_pthread.dylib`_pthread_start + 125
        frame #6: 0x00007ff815da6f6b libsystem_pthread.dylib`thread_start + 15

The opam switch has been exported to the file below. It uses OCaml 4.13.1, lablgtk3.3.1.2, lablgtk3-sourceview3.3.1.2. I'm not sure which other packages would be relevant.

switch-exported.txt

I'll try to provide a more reproducible environment and see if I can better understand it.