Tips for debugging seg. faults?

Does anyone have any helpful tips for debugging seg. faults in a Haskell program that calls out to a C library, via the FFI?

On Sat, Jun 19, 2021 at 12:53:35PM -0700, David Banas wrote:
Does anyone have any helpful tips for debugging seg. faults in a Haskell program that calls out to a C library, via the FFI?
The question would ideally be more specific. What kind of data is being passed to the C FFI function? The most common issue is that the structure passed may no longer have any live references on the Haskell side, and may be freed before the C FFI is done with it. Thus functions like `withForeignPtr` which try to make sure the the referenced memory is not released too early. Buffer pointers should be to pinned memory, ... Sure, build your program with "-Og -g -ggdb3" and use "gdb" to see more context for the crash, but typically the problem is a simple misuse of pointers that are not guaranteed to be valid. Therefore, what is the FFI signature, and how is it called? -- Viktor.
participants (3)
-
David Banas
-
Henning Thielemann
-
Viktor Dukhovni