ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Check also http://www.picolisp.com for more information
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> o/
<tankf33der> msys the same crash
<tankf33der> netbsd8 crashed too
<tankf33der> linux not.
<beneroth> <o
<beneroth> \o
<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> yea
<tankf33der> and non linux
<Regenaxer> :(
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
<tankf33der> eh.
orivej has joined #picolisp
<Regenaxer> Happy Birthday freemint!
<Regenaxer> These crashes sound really troublesome
<freemint> thanks
<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> ok
<Regenaxer> hmm, segfault in mark()
<tankf33der> yea
<tankf33der> this is new.
<tankf33der> i never showed it to you, but i seen it several years ago...
<tankf33der> IIRC.
<Regenaxer> gc did not change since May 14
<Regenaxer> oh
<tankf33der> i think i know it several years.
<tankf33der> and you too.
<tankf33der> :)
<Regenaxer> I don't remember :(
<tankf33der> yea.
<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> so
<tankf33der> news:
<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
<tankf33der> ok
<Regenaxer> But this may be by chance
<Regenaxer> ok
<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> :(
<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?
<tankf33der> yea
<Regenaxer> yes, not stack
<Regenaxer> You tested (load "@lib/simul.l") (setq G (grid 1000 1000)) (gc) ?
<tankf33der> yea
<Regenaxer> But Linux works?
<Regenaxer> I build pil32 now
<tankf33der> always.
<Regenaxer> hmm
<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> news:
<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> ok
<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> hmm
<Regenaxer> The cell which is 'set' may already be faulty here
<tankf33der> news:
<tankf33der> 4 lines
<tankf33der> if comment line:
<tankf33der> 1 - ok
<tankf33der> 2 - ok
<tankf33der> 3 - crash
<tankf33der> 4 - ok
<tankf33der> so
<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> ok
<Regenaxer> Does not help, the problem is somewhere else
<Regenaxer> Is the grid in G all right if you don't call (gc)
<tankf33der> yea.
<Regenaxer> eg (gc 200) (grid ...) (test grid)
<tankf33der> as expected.
<Regenaxer> ok
<tankf33der> i will run away in 20mins.
<Regenaxer> ok
<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> ok
<Regenaxer> (for Col G (for This Col (=: ... will trigger gc
Regenaxer has left #picolisp [#picolisp]
Regenaxer has joined #picolisp
<tankf33der> ok
<Regenaxer> oops
<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> ok
<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]
<Regenaxer> tough
<tankf33der> now i see this:
<tankf33der> without -O2
<Regenaxer> ok
<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> yes
<Regenaxer> in line 11 ok
<Regenaxer> line 14 needs a cell
<Regenaxer> 0 or 8
<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> ok
<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
<tankf33der> afk.
<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]
<tankf33der> ret.
<Regenaxer> Me too
_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> right
<Regenaxer> Still a mysterious situation
<beneroth> T
alexshendi has joined #picolisp
<beneroth> :)
<beneroth> some debugging and some walks needed :)
<beneroth> Good evening alexshendi
<Regenaxer> Hi beneroth, alexshendi :)
<alexshendi> Hi beneroth, how are you?
<alexshendi> Hi, Regenaxer!
<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 :(
<Regenaxer> :(
<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> aaah
<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]
alexshendi has quit [Quit: Yaaic - Yet another Android IRC client - http://www.yaaic.org]
ubLIX has joined #picolisp
orivej has joined #picolisp