Hello Matija, > I'm facing the problem mentioned in [1]. Problematic are all examples > with virtual methods. Ok, so you are facing the same problem as Guix and HomeBrew, all other distro (that tried g-golf) work fine, i use Debian. > I have tried simpler example (attached) with same result. There is no > problem, when try same thing with guile-gi library. Somehow, callbacks > are not callable back from C code. Any clue? afaict, guile-gi does not support the definition of virtual functions - you can try this example using guile-gi (which afaict is unmaintained) because you are calling a 'regular' method, set-draw-func no problem, just saying that a mechanism to define vfunc in the GI lang binding of your choice is absolutely crucial for any 'real serious' gnome stack (type)libs use one big diffference in between guile-gi and g-golf is that in g-golf, the callback closure marshal code is written in scheme, the one in guile-gi is written in C - it could be that the pointer of the vfunc 'is fine' in guix/nix as well, but that for some reason, the %g-golf-callback-closure-marshal pointer would be the one that is damaged, i don't know Great, never used that function. You incidentally found a small bug in GI itself [1], and a tiny bug in G-Golf as well, though not the one that would solve the Guix/Nix/Homebrew problem yet [2], but thanks: can you install from the source checkout the devel branch run the make danse and install the latest [ to double check, you need this commit [ 134b57f52bc23cea8e3e02b974c7b909bb7cf56e So, here, after i patched g-golf to deal with this GI destroy notify callback tiny problem, so i can pass #f as its argument, then it works fine, as expected: https://imgur.com/a/tX8bn16 I slightly patched your example so it allows you to call it passing a -d [--debug] argument on the command line, which triggers the display of useful information while debugging ... > I'm using Nix. It would be interesting to try to understand the difference in between Debian (and most other distro) and Guix/Nix: when a vfunc is defined, it sets the upstream class structure field to a pointer, the result of calling g-callable-info-make-closure (defined in (g-golf hl-api callback). For some reason, that pointer is 'damaged' in Guix/Nix/Homebrew, and not in Debian (and most other distro), and as the gdb backtrace shows, in the msg link you are referring to, when Gtk tries to make a snapshot, it needs to access and 'call that pointer', which segfault ... I hope you'll be able to help, feel free to come and join us in #guile or #guix and try to get some help from a guix expert ... Thanks, David [1] all destroy notify callback argument ('linked' to a user-data argument) should always allow to be NULL, which g-golf checks by calling (>= (!destroy clb/arg) 0) but the signature of the destroy notify callback argument for gtk_drawing_area_set_draw_func wrongly report -1 [2] i did report the incident upstream, and meanwhile, patched g-golf so it treats callback argument named "destroy" as a maybe-null-exception, which checks itself had a tiny bug, fixed, thanks!