2019-05-16 17:56:06 |
Andrew Kent |
description |
# Description and Test-case
Note: I've only been able to cause this crash on windows.
It seems as though if a cffi-callback is active during garbage collection, sbcl will crash (or at drop into ldb).
See example here: https://gitlab.com/_ark_/garbagecrash
Commenting out the `sb-ext:gc` funcall prevents the crash.
Unfortunately I wasn't able to reproduce this without SDL2-mixer (presumable it's doing something more complicated than my toy callback code was).
# SBCL Version
./bin/sbcl.exe --version
SBCL 1.4.14
# Features
*features*
(:SWANK :QUICKLISP :ASDF3.3 :ASDF3.2 :ASDF3.1 :ASDF3 :ASDF2 :ASDF :OS-WINDOWS
:NON-BASE-CHARS-EXIST-P :ASDF-UNICODE :ROS.INIT :X86-64 :64-BIT
:64-BIT-REGISTERS :ALIEN-CALLBACKS :ANSI-CL :C-STACK-IS-CONTROL-STACK
:CALL-SYMBOL :COMMON-LISP :COMPARE-AND-SWAP-VOPS :CYCLE-COUNTER
:FLOAT-EQL-VOPS :FP-AND-PC-STANDARD-SAVE :GENCGC :IEEE-FLOATING-POINT
:INTEGER-EQL-VOP :LINKAGE-TABLE :LITTLE-ENDIAN :OS-PROVIDES-DLOPEN
:OS-PROVIDES-PUTWC :PACKAGE-LOCAL-NICKNAMES :SB-DOC :SB-DYNAMIC-CORE :SB-EVAL
:SB-FUTEX :SB-LDB :SB-PACKAGE-LOCKS :SB-QSHOW :SB-SAFEPOINT
:SB-SAFEPOINT-STRICTLY :SB-SIMD-PACK :SB-SOURCE-LOCATIONS :SB-THREAD
:SB-THRUPTION :SB-UNICODE :SB-WTIMER :SBCL :STACK-ALLOCATABLE-CLOSURES
:STACK-ALLOCATABLE-FIXED-OBJECTS :STACK-ALLOCATABLE-LISTS
:STACK-ALLOCATABLE-VECTORS :STACK-GROWS-DOWNWARD-NOT-UPWARD
:UNDEFINED-FUN-RESTARTS :UNWIND-TO-FRAME-AND-CALL-VOP :WIN32) |
# Description and Test-case
Note: I've only been able to cause this crash on windows.
It seems as though if a cffi-callback is active during garbage collection, sbcl will crash (or drop into ldb).
See example here: https://gitlab.com/_ark_/garbagecrash
Commenting out the `sb-ext:gc` funcall prevents the crash.
Unfortunately I wasn't able to reproduce this without SDL2-mixer (presumably it's doing something more complicated than my toy callback code was).
# SBCL Version
./bin/sbcl.exe --version
SBCL 1.4.14
# Features
*features*
(:SWANK :QUICKLISP :ASDF3.3 :ASDF3.2 :ASDF3.1 :ASDF3 :ASDF2 :ASDF :OS-WINDOWS
:NON-BASE-CHARS-EXIST-P :ASDF-UNICODE :ROS.INIT :X86-64 :64-BIT
:64-BIT-REGISTERS :ALIEN-CALLBACKS :ANSI-CL :C-STACK-IS-CONTROL-STACK
:CALL-SYMBOL :COMMON-LISP :COMPARE-AND-SWAP-VOPS :CYCLE-COUNTER
:FLOAT-EQL-VOPS :FP-AND-PC-STANDARD-SAVE :GENCGC :IEEE-FLOATING-POINT
:INTEGER-EQL-VOP :LINKAGE-TABLE :LITTLE-ENDIAN :OS-PROVIDES-DLOPEN
:OS-PROVIDES-PUTWC :PACKAGE-LOCAL-NICKNAMES :SB-DOC :SB-DYNAMIC-CORE :SB-EVAL
:SB-FUTEX :SB-LDB :SB-PACKAGE-LOCKS :SB-QSHOW :SB-SAFEPOINT
:SB-SAFEPOINT-STRICTLY :SB-SIMD-PACK :SB-SOURCE-LOCATIONS :SB-THREAD
:SB-THRUPTION :SB-UNICODE :SB-WTIMER :SBCL :STACK-ALLOCATABLE-CLOSURES
:STACK-ALLOCATABLE-FIXED-OBJECTS :STACK-ALLOCATABLE-LISTS
:STACK-ALLOCATABLE-VECTORS :STACK-GROWS-DOWNWARD-NOT-UPWARD
:UNDEFINED-FUN-RESTARTS :UNWIND-TO-FRAME-AND-CALL-VOP :WIN32) |
|