00:19 ggoebel joined 00:30 btyler joined
MasterDuke Attempt to divide 1 by zero using div 01:08
in method floor at src/core/Rational.pm line 53
rest of the output here: gist.github.com/MasterDuke17/329ef...68cd55b285
timotimo you're saying it shouldn't blow up when stringified via gist? 01:09
MasterDuke ? no, i'm just showing a backtrace with the source file+line number, instead of m-CORE.setting 01:11
timotimo oh! 01:13
MasterDuke however, it's a complete hack, completely unusable
timotimo sorry, i'm kind of tired
i didn't realize that. i even used the filename to get at the right core :D
MasterDuke ha! but that is the point!
timotimo i meant: i read the file names and clearly used one of them, but still didn't realize that's what changed 01:16
MasterDuke yep, exactly why i think it's a good thing to implement 01:17
timotimo yes
do we want to make this accessible to user scripts, too? probably. for things like FatPack? 01:18
but if the actual pre-packed source isn't available, that could become annoying
perhaps an env var that turns translations off would be necessary
MasterDuke there was some discussion about this a week or two ago 01:19
timotimo also, i wonder if this could be an attack/obfuscation vector. giving your code a different filename that it claims to have to hide evil code from investigators
MasterDuke in #perl6-dev i think
there seemed to be consensus for making the change
timotimo mhm 01:20
it's not easy to get spesh post-inline optimization to not explode :\ 01:21
MasterDuke the problem of not having the source was explained away since the end user doesn't necessarily have the core settings either
so it's not like its name+line number is any more useful
timotimo mhm
MasterDuke but like i mentioned, the way it's currently implemented is completely wrong 01:23
in that it only works if you run perl6 from the directory where you've checked out+built the source 01:24
timotimo oh, whoops :)
don't say it actually opens the files to look for the annotationl ines?
MasterDuke i'd be lying if i said no
timotimo right
what we can do is this: have a data structure built up during compilation, put it into the serialized blob and "turn it on" for a given compilation unit with a nqp::op that gets put into the dependencies+deserialize part of the comp unit 01:26
how does that sound?
MasterDuke way over my head
but yeah, it obviously has to happen at compilation time 01:27
timotimo there could either be an op that gets that registered datastructure at the time we create the backtrace
or the resolution of lines/filenames would happen in C code, in which case it'd not have to go through an op to fetch the data 01:28
you were working on this in C code? or in p6/nqp land?
MasterDuke c
timotimo OK
MasterDuke src/core/exceptions.c
timotimo so imagine you could just frame->staticframe->line_annotations 01:29
and get something where you could iterate or binary-search or something
MasterDuke yeah, i've been trying to file where line_number gets set for an annotation, but haven't found it yet 01:31
timotimo oh
that one's easy
it grabs it off a QAST node's "node" attribute 01:32
which is the match object that created it
MasterDuke oh, that happens in nqp? 01:33
timotimo the code that does it lives in the QASTCompilerMAST.nqp i expect 01:34
MasterDuke hm, git grep line_number in nqp shows nothing 01:38
timotimo one sec.
src/vm/moar/QAST/QASTOperationsMAST.nqp: nqp::bindattr_i($obj, MAST::InstructionList, '$!lineno', $lineno); 01:39
MasterDuke ah, thanks 01:40
02:48 ilbot3 joined 06:51 geekosaur joined 08:10 zakharyas joined 08:24 domidumont joined 08:26 vendethiel joined 08:29 domidumont joined 08:34 domidumont joined 09:16 FROGGS joined
FROGGS o/ 09:17
nwc10 \o
jnthn o/ 09:20
09:44 kjs_ joined
FROGGS just opened github.com/ivmai/libatomic_ops/issues/19 10:14
10:18 kjs_ joined
dalek arVM: 0ae47f3 | FROGGS++ | src/moar.h:
workaround missing libatomic_ops prototype on s390x

  See github.com/ivmai/libatomic_ops/issues/19
10:21
FROGGS .tell nebuchadnezzar Is there anything else I can do for you? otherwise I'd leave it in this state: gist.github.com/FROGGS/9c06ac23b49...aa1687a43c 10:23
yoleaux2 FROGGS: I'll pass your message to nebuchadnezzar.
FROGGS .tell domidumont Is there anything else I can do for you? otherwise I'd leave it in this state: gist.github.com/FROGGS/9c06ac23b49...aa1687a43c
yoleaux2 FROGGS: I'll pass your message to domidumont.
11:18 FROGGS[mobile] joined 12:17 FROGGS[mobile]2 joined 14:15 dalek joined 14:32 kjs_ joined 15:14 kjs_ joined 15:27 domidumont joined 15:29 domidumont1 joined
dalek arVM: 0625555 | jnthn++ | src/6model/reprs/ReentrantMutex.c:
Panic when trying to GC a locked mutex.

Otherwise, we will end up with a SIGABRT with no explanation on some platforms, which will be harder to debug.
15:46
arVM: d87061f | jnthn++ | src/core/exceptions.c:
When we panic, note that's what we're doing.
jnthn So, an interesting nugget 15:47
I got curious how the JVM handles these cases without exploding 15:48
Thankfully, hotspot is open-source so you can find out easily these days ;)
Turns out that they keep a condvar per thread
They define two operations on a thread: park and unpark
When they park a thread, they have it block on a condvar 15:49
The unpark operation on a thread simply signals said condvar
They then implemnet things like ReentrantLock in higher-level code.
Keeping a queue of waiters, which are parked until they reach the head of the queue 15:50
Since the only "real" OS-level mutexes around are just the ones per thread for the condvar, the GC-able things are thus higher level data structures 15:51
So "no problem"
We could at some point consider doing similar :) 15:55
(Of course, real world code that locks, then lets the lock get GC'd, is busted anyway) 15:56
(So that's the real bug I need to now hunt down.)
16:05 kjs_ joined 16:52 domidumont joined
domidumont FROGGS[mobile]2: I'm going to use your s390x patches as well. Thanks a bunch for the work ! :-) 17:29
yoleaux2 10:23Z <FROGGS> domidumont: Is there anything else I can do for you? otherwise I'd leave it in this state: gist.github.com/FROGGS/9c06ac23b49...aa1687a43c
domidumont FROGGS[mobile]2: I think we're fine. Let me upload the package and check what's going on on real hardware. 17:31
FROGGS[mobile]2 \o/ 17:52
19:26 vendethiel- joined 19:53 leedo joined 20:32 FROGGS joined
FROGGS o/ 20:33
t/04-nativecall/02-simple-args.t ......... ok 20:38
Build killed with signal TERM after 150 minutes of inactivity
:o(
ohh, my bad
that was from an old log!!
phew :o)
FROGGS watches buildd.debian.org/status/package.php?p=moarvm and buildd.debian.org/status/package.php?p=rakudo 20:41
21:15 FROGGS joined 21:29 MasterDuke joined