(use srfi-1) #> void FOO1(C_word cb) { C_callback (cb, 0); } // Foo2 randomly produces: //; Error: call of non-procedure: # //; or segfaults, void FOO2(C_word cb) { C_callback (cb, 0); C_callback (cb, 0); } <# (define FOO1 (foreign-safe-lambda void "FOO1" scheme-object)) (define FOO2 (foreign-safe-lambda void "FOO2" scheme-object)) ;; called with C_callback (define check-proc-callback (lambda args (if (null? args) #f #t))) ;; works fine: (define (run-test1) (for-each (lambda _ (FOO1 check-proc-callback)) (iota 100000))) (define (run-test2) (for-each (lambda _ (FOO2 check-proc-callback)) (iota 100000))) (print "test 1") (run-test1) (print "test 2-bad") (run-test2) (print "compiled tests ok (not!)") /tmp $ csc bad.scm && ./bad test 1 test 2-bad segmentation fault