Error: (with `import segfaults`) free(): invalid pointer Traceback (most recent call last) /home/runner/libmtg/src/libmtg/cards.nim(119) test1 SIGABRT: Abnormal termination. Aborted (core dumped) Error: execution of an external program failed: '/home/runner/libmtg/tests/test1' Tip: 5 messages have been suppressed, use --verbose to show them. tools.nim(36) doCmd Error: Execution failed with exit code 1 ... Command: /home/runner/libmtg/nimble-env/bin/nim c --noNimblePath -d:NimblePkgVersion=0.1.0 --hints:off -r --path:. /home/runner/libmtg/tests/test1 Run
Things to note: The trace back line num is wrong, idk why but segfaults usually get it wrong. How do I fix this? Nim code: proc load*(cs: var CardSet) = let lib = TrackedLibHandle(loadLib(cs.sourcePath)) cs.lib = lib block: let loadProc = cast[CardSetLoadProc](lib.checkedSymAddr("load")) let cards = loadProc() for key, value in cards: cs.cards[key] = Card() var vvalue = value vvalue.source = addr cs echo vvalue.eventHandle if vvalue.eventHandle != "": let name = cstring(vvalue.eventHandle) let prc = block: echo 0 let p = lib.checkedSymAddr(name) # Error echo 1 cast[EventHandleProc](p) echo "Inbetween" vvalue.eventHandleProc = prc if vvalue.statelessEventHandle != "": let name = cstring(vvalue.statelessEventHandle) let prc = cast[EventHandleProc](lib.checkedSymAddr(name)) vvalue.statelessEventHandleProc = prc cs.cards[key][] = vvalue # Assign ref Run