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
|