Hi, I have a project going to make Racket bindings to the libhackrf C
library installed on my Debian 9 system. I have successfully made and
used bindings to around a dozen procedures in the library. However,
when I get to the first really important one, my call is crashing with
a SIGSEGV. I have this procedure defined:

(define-hackrf hackrf_start_rx (_fun (_cpointer 'hackrf_device)
                                     (_fun _pointer -> _int)
                                     _pointer -> _int))


This procedure takes a pointer to a device, a callback function, and
another pointer (which I won't go into but is supposed to be null
usually). Internally, hackrf_start_rx is a C procedure which generates
a pthread which repeatedly calls the callback function while receiving
data, while the original thread returns 0.

christopher@nightshade:~/Repos/hackrf-rkt$ racketWelcome to Racket
v6.7.> ,load hackrf.rkt> ,enter hackrf.rkt"hackrf.rkt"> transf-
cb#<procedure:transf-cb>"hackrf.rkt"> (hackrf-init)"hackrf.rkt">
(define h (hackrf-open))"hackrf.rkt">
h#<cpointer:hackrf_device>"hackrf.rkt"> (sensible-defaults
h)"hackrf.rkt"> (define cb (transf-cb))"hackrf.rkt">
cb#<procedure:...f-rkt/hackrf.rkt:257:2>"hackrf.rkt"> (trace-call
'hackrf_start_rx hackrf_start_rx h cb #f)>(hackrf_start_rx 
#<cpointer:hackrf_device>  #<procedure:...f-rkt/hackrf.rkt:257:2> 
#f)<00"hackrf.rkt"> SIGSEGV MAPERR si_code 1 fault on addr (nil)Aborted

I can't figure out how to debug this further because I don't know how
to get Racket to display the C backtrace, and I don't know how to get
Racket to run successfully in gdb. I'm thinking either (1) I'm somehow
passing in my callback function wrong, or (2) something about Racket is
incompatible with C library functions that use pthreads. You can see
that hackrf_start_rx is returning 0, so the SIGSEGV MAPERR must be
occurring in the still running thread, but I'm not sure what I can
conclude from that.

For the whole code see

git clone git://lavender.qlfiles.net/pub/git/hackrf-rkt.git
git checkout cf81011be6509da00b779881a5d388af399a4d2e


-- 
Christopher Howard
p: +1 (907) 374-0257
w: https://librehacker.com
xmpp: creation...@member.fsf.org
otr: E9685B53 01F038DD D29281C9 30FDA71E BD0095D4
gnupg: 23FD5CC5 (keys.gnupg.net)
radio: KL1TL
featured: http://www.foi.org

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/1561523686.14508.3.camel%40qlfiles.net.
For more options, visit https://groups.google.com/d/optout.

Reply via email to