clacke_movim has joined #picolisp
freemint has quit [Quit: Leaving]
orivej has joined #picolisp
alexshendi has quit [Read error: Connection reset by peer]
_whitelogger has joined #picolisp
mtsd has joined #picolisp
rob_w has joined #picolisp
beneroth has joined #picolisp
orivej has quit [Ping timeout: 268 seconds]
mtsd has quit [Ping timeout: 272 seconds]
mtsd has joined #picolisp
<
tankf33der>
msys the same crash
<
tankf33der>
netbsd8 crashed too
<
tankf33der>
linux not.
<
tankf33der>
netbsd7 not.
<
beneroth>
I didn't know about mysys
<
tankf33der>
beneroth: this code - (load "@lib/simul.l") (setq G (grid 1000 1000)) (gc)
<
Regenaxer>
tankf33der: Crashes in mmap()?
<
tankf33der>
unknown yet.
<
tankf33der>
installing latest stable openbsd
<
Regenaxer>
Always pil32?
<
tankf33der>
and non linux
freemint has joined #picolisp
<
freemint>
Just turned 21.
<
beneroth>
hi freemint :) all the best for your next lap around the sun
<
tankf33der>
openbsd 6.5, i386, pil32 - crash.
<
freemint>
tankf33der, how do you find so many crashes and why do you hunt them
orivej has joined #picolisp
<
Regenaxer>
Happy Birthday freemint!
<
Regenaxer>
These crashes sound really troublesome
<
Regenaxer>
There is no system-code involved
<
Regenaxer>
So it must be a general problem
<
Regenaxer>
Which signal is sent to kill?
<
freemint>
kill or term?
<
Regenaxer>
Not term I think
<
Regenaxer>
Segv Bus etc
<
tankf33der>
look at gdb core backtrace
<
Regenaxer>
hmm, segfault in mark()
<
tankf33der>
this is new.
<
tankf33der>
i never showed it to you, but i seen it several years ago...
<
Regenaxer>
gc did not change since May 14
<
tankf33der>
i think i know it several years.
<
tankf33der>
and you too.
<
Regenaxer>
I don't remember :(
<
Regenaxer>
I think it is not gc, but some function called in 'grid' then
<
Regenaxer>
gc did not change a very long time
<
Regenaxer>
At least 9 years (and minor May 2014)
<
Regenaxer>
So some other fun destroys the heap
<
tankf33der>
i can repeat another way too.
<
tankf33der>
let me try.
<
Regenaxer>
Only 'grid' is called
<
Regenaxer>
intern, cons, con etc.
<
Regenaxer>
cons and con can't be
<
Regenaxer>
also not pack
<
Regenaxer>
But pil32 has no namespaces, so 'intern' did not change iirc
<
Regenaxer>
One change was 4th UTF-8 byte
<
tankf33der>
another way.
<
tankf33der>
fibo via cache.
<
tankf33der>
1000 works, 10000 crash.
<
Regenaxer>
only 'cache'
<
Regenaxer>
'char' and 'hash'
<
Regenaxer>
Can it be the 4th UTF-3 byte?
<
tankf33der>
fibo crash fixed by ulimit -s 128000
<
tankf33der>
but didnt help for grid.
<
Regenaxer>
I did not think fibi uses so much stack
<
Regenaxer>
Which arg to 'fibo'?
<
Regenaxer>
very big?
<
tankf33der>
11:57 <tankf33der> 1000 works, 10000 crash.
<
Regenaxer>
ok, maybe. Default is 8 MiB stack?
<
Regenaxer>
8 MiB should suffice for (fibo 10000) I think
<
tankf33der>
this is default on openbsd.
<
tankf33der>
11:59 <tankf33der> fibo crash fixed by ulimit -s 128000
<
Regenaxer>
But this may be by chance
<
Regenaxer>
6.stack(kbytes) 32768
<
Regenaxer>
32 MiB, rather big
<
Regenaxer>
strange
<
Regenaxer>
Do you remember
*when* it was still OK?
<
tankf33der>
never.
<
tankf33der>
i can try any stable release in 2017
<
tankf33der>
let me try.
<
Regenaxer>
The utf8 change was Dec 2018
<
tankf33der>
: (version)
<
tankf33der>
17.6.29 C
<
tankf33der>
crashed.
<
tankf33der>
15.11.0 C - crashed.
<
Regenaxer>
fibo cached?
<
tankf33der>
3.1.5.0 C - crashed.
<
Regenaxer>
3.1.5.0 is from dec13
<
tankf33der>
fibo no crashed on 15.11.0
<
tankf33der>
as current too after increased stack.
<
Regenaxer>
You tested with 'grid' now?
<
Regenaxer>
yes, not stack
<
Regenaxer>
You tested (load "@lib/simul.l") (setq G (grid 1000 1000)) (gc) ?
<
Regenaxer>
But Linux works?
<
Regenaxer>
I build pil32 now
<
tankf33der>
always.
<
tankf33der>
netbsd8 - crash, netbsd7 - ok
<
tankf33der>
openbsd6.5 - crash.
<
Regenaxer>
Tested current on Linux - ok
<
Regenaxer>
So which function in 'grid' is it?
ubLIX has joined #picolisp
<
tankf33der>
box :)
<
tankf33der>
i will make grid smaller.
<
tankf33der>
doing.
<
Regenaxer>
yeah, box or cons, but they are very common and general, everything would crash then
<
Regenaxer>
Can you try without 'intern' first?
<
Regenaxer>
'intern' is more complex
<
Regenaxer>
and very seldom used in programs
<
freemint>
tankf33der, does the bug appear on older and very old picolisp releases too?
<
Regenaxer>
hmm, but 'intern' itself is very simple
<
Regenaxer>
I think the problem is not the code, but the compiler
<
Regenaxer>
Do you build with optimizations?
<
tankf33der>
(grid 1000 1000) (gc) - ok
<
tankf33der>
(setq G (grid 1000 1000)) (gc) - crash.
<
Regenaxer>
because it is not reachable
<
Regenaxer>
it is thus not marked
<
tankf33der>
problem in second part of grid
<
Regenaxer>
It is the structure reachable from G
<
tankf33der>
where set and con set neibours.
<
Regenaxer>
What about compiler options?
<
Regenaxer>
I saw weird things in the past with -O...
<
tankf33der>
(set (: 0 1) (++ West))
<
tankf33der>
if remove line above then no crash.
<
Regenaxer>
The cell which is 'set' may already be faulty here
<
tankf33der>
4 lines
<
tankf33der>
if comment line:
<
tankf33der>
1 - ok
<
tankf33der>
2 - ok
<
tankf33der>
3 - crash
<
tankf33der>
4 - ok
<
tankf33der>
only if comment line 3 it still crahes.
<
Regenaxer>
Which line is 3?
<
tankf33der>
(set (: 0 1) (++ West)) # west
<
tankf33der>
(set (: 0 -1) South) # south
<
tankf33der>
(con (: 0 1) (++ East)) # east
<
tankf33der>
(con (: 0 -1) # north
<
tankf33der>
(or (car L) (and FY (car Col))) )
<
tankf33der>
(set (: 0 -1) South) # south
<
tankf33der>
^^ line 3
<
Regenaxer>
Does not help, the problem is somewhere else
<
Regenaxer>
Is the grid in G all right if you don't call (gc)
<
Regenaxer>
eg (gc 200) (grid ...) (test grid)
<
tankf33der>
as expected.
<
tankf33der>
i will run away in 20mins.
<
Regenaxer>
Can you test later without compiler optim?
<
Regenaxer>
Omit "-O2"
<
tankf33der>
doing.
<
tankf33der>
the same.
<
tankf33der>
by the way:
<
Regenaxer>
I wonder what no "-O" means
<
tankf33der>
(gc) is new thing, because my original code to crash were:
<
Regenaxer>
if it takes some default
<
tankf33der>
(load "@lib/simul.l")
<
tankf33der>
(for Col G (for This Col (=: B6 1)))
<
tankf33der>
(setq G (grid 1000 1000))
<
tankf33der>
I removed -O2 and tried.
<
tankf33der>
the same.
<
Regenaxer>
(for Col G (for This Col (=: ... will trigger gc
Regenaxer has left #picolisp [#picolisp]
Regenaxer has joined #picolisp
<
Regenaxer>
Do a (gc 1000) before
<
Regenaxer>
then gc will not run
<
tankf33der>
testing.
<
tankf33der>
(gc 1000) - crash
<
tankf33der>
as expected.
<
tankf33der>
o64-386# ulimit -a
<
tankf33der>
file(blocks) unlimited
<
tankf33der>
coredump(blocks) unlimited
<
tankf33der>
data(kbytes) 3145728
<
tankf33der>
time(cpu-seconds) unlimited
<
tankf33der>
stack(kbytes) 8192
<
tankf33der>
lockedmem(kbytes) 681122
<
tankf33der>
memory(kbytes) 2039912
<
tankf33der>
nofiles(descriptors) 128
<
tankf33der>
processes 1310
<
Regenaxer>
*Before* calling (grid)
<
tankf33der>
maybe something here is not enought.
<
tankf33der>
yes, before.
<
Regenaxer>
hmm, stack and mem are big enough
<
Regenaxer>
no recursion here
<
Regenaxer>
so stack does not matter
rob_w has quit [Remote host closed the connection]
<
tankf33der>
now i see this:
<
tankf33der>
without -O2
<
Regenaxer>
always in mark(), so some cell(s) are faulty
<
Regenaxer>
But why never in Linux?
<
Regenaxer>
alignment issue?
<
tankf33der>
unknown.
<
Regenaxer>
Pointers like (x=0x5da50408) look good
<
Regenaxer>
(x=0x5da48704) perhaps not
<
tankf33der>
always ends 0 or 8
<
tankf33der>
(gdb) bt
<
tankf33der>
#0 0x1822d707 in mark (x=0x5da48704) at gc.c:11
<
Regenaxer>
4 is a symbol
<
Regenaxer>
in line 11 ok
<
Regenaxer>
line 14 needs a cell
<
Regenaxer>
So alignment is correct
<
tankf33der>
(grid 444 444) - ok
<
tankf33der>
(grid 555 555) and high always crash.
<
Regenaxer>
interesting
<
Regenaxer>
looks like when allocating a new heap chunk
<
Regenaxer>
But also crashes if you do (gc 1000) before, right?
<
tankf33der>
(gc 1000) (grid 555 555) - crash
<
Regenaxer>
*But* then it does
*not* crash in mark(), right?
<
tankf33der>
(setq G (grid 444 444)) (println (bytes G)) -> 446
<
tankf33der>
(setq G (grid 555 555)) (println (bytes G)) -> 557
<
tankf33der>
testing.
<
tankf33der>
i see this in (gc 512) (grid 555 555)
<
tankf33der>
Loaded symbols for /usr/libexec/ld.so
<
tankf33der>
#0 0x165e56ed in mark (x=0x4fcfc5c4) at gc.c:14
<
tankf33der>
#0 0x165e56ed in mark (x=0x4fcfc5c4) at gc.c:14
<
tankf33der>
(gdb) bt
<
tankf33der>
14 mark(p->car);
<
Regenaxer>
So the gc arg was not big enough
<
Regenaxer>
Anyway, I think gc is just the symptom, not the cause
orivej has quit [Ping timeout: 272 seconds]
freemint has quit [Remote host closed the connection]
freemint has joined #picolisp
<
tankf33der>
gc 1000 is also crash
<
Regenaxer>
See you! And thanks!!
orivej has joined #picolisp
orivej has quit [Ping timeout: 272 seconds]
freemint has quit [Ping timeout: 252 seconds]
orivej has joined #picolisp
mtsd has quit [Quit: leaving]
freemint has joined #picolisp
freemint has quit [Read error: Connection reset by peer]
_whitelogger has joined #picolisp
ubLIX has quit [Quit: *hides*]
orivej has quit [Ping timeout: 272 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 272 seconds]
alexshendi has joined #picolisp
orivej has joined #picolisp
alexshendi has quit [Ping timeout: 258 seconds]
<
tankf33der>
pil32 passed grid-crash on sanitizers by gcc. address,undefined,leak.
<
tankf33der>
valgrind also ok.
<
tankf33der>
good sign.
pointfree has quit [Read error: Connection reset by peer]
<
Regenaxer>
Still a mysterious situation
alexshendi has joined #picolisp
<
beneroth>
some debugging and some walks needed :)
<
beneroth>
Good evening alexshendi
<
Regenaxer>
Hi beneroth, alexshendi :)
<
alexshendi>
Hi beneroth, how are you?
<
alexshendi>
Hi, Regenaxer!
<
beneroth>
I'm sick (again, argh) but else in good mood and stuff developing fine :)
<
beneroth>
hi Regenaxer \o
<
Regenaxer>
Oh, take care!
<
beneroth>
yeah, too much work, not enough sleep recently :(
<
beneroth>
but soon I get a helper, then stuff should relax soonish and the business grow at the same time :)
<
alexshendi>
If any Picolispers are at GPN19, I would like to meet :)
michelp has quit [Ping timeout: 276 seconds]
* beneroth
looking up GPN19...
<
beneroth>
Karlsruhe
michelp has joined #picolisp
khk has joined #picolisp
michelp has quit [Ping timeout: 252 seconds]
michelp has joined #picolisp
pointfree has joined #picolisp
orivej has quit [Ping timeout: 272 seconds]
ubLIX has joined #picolisp
orivej has joined #picolisp