libera/#sbcl - IRC Chatlog
Search
6:58:46
occ
I set a (break) in code, and program can stop into debugger where (break) located,but debugger tells [No Locals]
9:26:32
occ
phoe: why (declaim (optimize (speed 0) (space 0) (safety 3) (debug 3))) don't affect compiler's behaviour? Ltk code(make-instance) optimized?
12:22:53
McParen
I have encountered a weird bug when using sbcl to access ncurses from cffi: something happened during the last 6-8 weeks, i guess an glibc update, so that foreign arrays cant be accessed any more with sbcl+cffi, they result in an error of the type "CORRUPTION WARNING in SBCL pid 3962 tid 3962: Memory fault at 0x7f849546f5c0"
12:24:23
McParen
but ONLY when a binary is produced, when called interactively, everything runs as before. it does not depend on any single sbcl version, i've randomly tried various version released during the last year.
12:26:03
McParen
it crashes (by getting into the debugger and producing the above error) reliably when saved and run.
12:27:55
|3b|
do you use any FFI libraries that might try to initialize foreign libraries when loaded?
12:27:56
McParen
i have old builds (end of november) where it still works like it did the years before, but everything from, say, 2023 on, dispays that memory error
12:28:59
McParen
i also dont think that its an sbcl problem, since it does not deend on the sbcl version.
12:29:33
McParen
something changed, whether it is sbcl or the underlying system, and I'm trying to find out what it is.
12:30:09
McParen
as i said, i've tried various sbcl versions which i ised without problems during the last years, and they all now display the same error.
12:31:30
McParen
but what _could_ it possibly be, when my end-of-november builds work and new builds with the same sbcl and same cffi and without any changes now fail?
12:34:58
|3b|
there isn't much people can usefully determine from a single access, other that "that works iff the pointer is valid", and by extension "it didn't work, so you pointer is invalid"
12:35:42
McParen
I'm trying to find out what possibly could have changed because old sbcl is obvious not and old code versions also obviously did not.
12:35:57
scymtym
just to be clear since this hasn't been said explicitly: the fact that accessing foreign memory in certain way worked before does not mean the code is correct. it may have worked (or at least not crashed) by accident before
12:38:45
|3b|
i guess another possibility is that the old binary is loading a different .so than the new ones, and it works differently enough to either break code or expose a bug
12:57:02
stassats`
(defparameter acs-map-array (cffi:foreign-symbol-pointer "acs_map")) runs at build time, does it not?
12:58:49
McParen
how to explain that it worked for years and then suddenly the last few weeks started causing problems?
13:00:51
McParen
this foreign array isnt allocated by me, but by ncurses, i am just accessing its contents
13:02:38
|3b|
you can allocate and load, you just can't save pointers and expect them to work after a load :p (not loading is probably a good enough approximation though)
13:04:34
|3b|
yeah, but some libs do too much wacky stuff to work even without image dumping involved :/