libera/#commonlisp - IRC Chatlog
Search
13:19:33
asarch
Why could you get this error in SBCL?: "The integrity of this image is possibly compromised."
13:25:26
asarch
This is the log when I ran my web app for the first time: https://pastebin.com/8wAKuWGR
13:26:24
Bike
this still doesn't mention what actually happened before the corruption warning, does it?
13:51:19
aeth
asarch: "the integrity of the image" is either a CFFI or (safety 0) or similar bug, probably out of bounds, maybe something like use-after-free... perhaps even a dynamic-extent that escaped the scope. Something dangerous happened, poorly.
13:52:22
aeth
It's basically something that would have resulted in "Segmentation fault" if C or C++, but instead the image continues running, but probably shouldn't because it's probably still broken.
13:54:02
aeth
And if you're one of those people who has an emacs server with SLIME running 24/7 then it's probably really annoying.
13:54:26
aeth
Since one Lisp process could run multiple programs, perhaps even the entire DE (see e.g. stumpwm) and needs restarting
13:54:53
aeth
But if you're running it from the shell, no big deal. Just find the bug with CFFI, (safety 0), dynamic-extent, or similar
13:55:20
aeth
(Really, you shouldn't use (safety 0) at all except perhaps inside a LOCALLY to very, very clearly limit the possible damage)
14:01:36
asarch
I thought it was IRONCLAD: "[2022-08-18 09:01:08 [WARNING]] Warning while processing connection: redefining IRONCLAD:WITH-DECRYPTING-STREAM in DEFMACRO"
14:12:58
aeth
libraries will also e.g. inline at the wrong place so they don't actually get inlined etc etc
14:31:17
asarch
I got another different address: Memory fault at (nil) (pc=0x54033624 [code 0x54033330+0x2F4 ID 0xd00b], fp=0x7f06c795daf0, sp=0x7f06c795dac0) tid 16400
14:32:49
jackdaniel
asarch: grep your projects / dependencies for (safety 0) and learn who is the bad guy
14:36:14
jackdaniel
naive person (like me) would wonder whether the "bin" directory is the directory that contains the source code with dependencies (because it stands for 'binary')
14:39:28
asarch
The project dir from (caveman2:make-project #P"/path/to/myapp/" :author "<Your full name>")
14:58:08
nij-
Suppose I have multiple lisp images working across multiple machines. I want them to cooperate. Sometimes, some big data (50M~50G) must be sent from one to another. What kind method or package would you recommend for that?
15:01:48
mfiano
A friend of mine wrote that at their old job in a cluster of over 10k machines. I'm sure it will scale to "multiple"
17:47:42
gendl
`(mapcar #'(lambda(item) (mapcar #'(lambda(other) (list item other)) '(1 2 3))) '(a b c))`
17:49:05
aeth
ofc it's probably not going to be as fast as something like LOOP... but if you want a fast answer rather than fast code, that should work
17:49:49
aeth
if you build lists with LOOP's collect, you can replace that with LOOP's append (which is the same word as #'append so it's not hard to remember) if you need it flat
17:50:57
aeth
(mapcan #'(lambda (item) (mapcar #'(lambda (other) (list item other)) '(1 2 3))) '(a b c))
17:52:13
aeth
But as far as concise goes, you have to use LOOP, a MAP-family function, or just APPEND it down. There may be other ways and they might even be faster, but they're longer.
17:53:44
gendl
`(mapcan #'(lambda(color) (mapcan #'(lambda(item) (mapcar #'(lambda(other) (list item other color)) '(1 2 3))) '(a b c))) '(red blue green))`
17:56:02
aeth
oh, if you do use #'append in places, you probably should use reduce, not apply, because reduce does things on arbitrary pairs, while apply applies it as a function and thus is subject to the function call length on the implementation (which might be short, even if it's not short on the ones you test it on)
17:58:04
gendl
aeth: thanks, I think I do over-use `apply` and under-use `reduce` -- i need to keep that in mind.
18:00:52
aeth
afaik, apply is normally for things of known length, or for writing compilers/interpreters