00:10 benabik joined
timotimo i don't know how to do the roots thing, so i'll just leave it out for now and someone else can fix it :) 00:14
00:17 lizmat_ joined
timotimo requested a pull 00:20
diakopter timotimo: :) 00:21
need to root the first one around the next two statements
timotimo you mean i need to temp_root first_part and then pop it before returning the result? 00:22
diakopter timotimo: substring allocates
yes
bbl 00:23
timotimo pop without _n takes only tc, right?
Error while compiling op newexception: MoarVM op 'newexception' is unknown as a core or extension op 00:24
probably not as simple to implement
so i'll go to bed instead :)
huh, it actually looks really simple in java 00:26
well. maybe tomorrow. 00:33
01:13 jnap joined 01:15 Ben_Goldberg joined 01:21 BenGoldberg joined 01:43 jnap joined 01:44 dalek joined 01:45 BenGoldberg joined 04:13 jnap joined 04:27 benabik joined 06:15 jnap joined 07:24 benabik joined 07:55 FROGGS joined 08:17 jnap joined 08:47 ssutch joined 09:38 benabik joined 10:18 jnap joined 10:51 tgt joined
nwc10 jnthn: current rakudo-moar SEGVs for me on Linux 11:02
been running valgrind for a while; no answer yet 11:03
my NQP is cursor-mem-opts, or whateever it's called.
FROGGS nwc10: that even might be the problem I have/had using an optimized moar
nwc10: you can use master now again, since I merged that branch in
timotimo: if line 410 allocates, your MVMString *replacement might be borken 11:20
timotimo even in the newest commit? 11:21
FROGGS e180e3b
timotimo yeah 11:22
i don't understand :)
FROGGS you need to protect the objects that a) might get moved due to some allocation that b) will get used later on 11:23
timotimo oh, so before i do first_part, i need to push replacement as a temporary root? 11:24
FROGGS so, you need to protect first_part, because 413 might allocate and you use it in 416
correct
timotimo okay. and i don't need to protect original, because i only use it once at the start 11:25
FROGGS either you protect replacement there, or in the code that calls MVM_string_replace
timotimo is the rest_part temp push correct there?
FROGGS right, and there is no allocation before the only usage of original 11:26
yes
(I am glad that I finally understand it) 11:29
timotimo that new commit should do it finally 11:32
nope. 11:34
JimmyZ: thank you for your comments :) 11:36
FROGGS timotimo: err, you are pushing twice and popping 3 11:40
timotimo GOD DAMNIT 11:41
i'm going to squish all those commits now :)
FROGGS +1 11:43
:o)
nwc10 Normal: Stage parse : 396.823 11:45
Valgrind: Stage parse : 6522.205
timotimo hah
yeah :|
nwc10 expect next output to be the cause of the SEGV. 11:46
OK, how does this get mangled: 11:50
==27229== Invalid read of size 2
==27229== at 0x4F00883: MVM_interp_run (interp.c:2093)
==27229== by 0x4F8928F: MVM_vm_run_file (moar.c:150)
==27229== by 0x400C9D: main (main.c:137)
==27229== Address 0x4 is not stack'd, malloc'd or (recently) free'd
now running with gdb, as I'm guessing that's a structure access on a NULL pointer 11:51
arnsholt Yeah, that sounds plausible 11:52
timotimo that's not exactly helpful. it's just the same as gdb would tell us 11:53
we're doing an atpos_o on a null object
IS_CONCRETE(obj) blows up because it's a null pointer
nwc10 timotimo: except that it does tell us that there was no undefined behaviour prior to the thing that gdb says 11:55
timotimo oh!
good
when i'm in gdb at such a point, how do i find out where in the source code i am? can i easily get at the last line annotation?
nwc10 I think `where` might be the answer you're looking for 11:57
and yes, "IS_CONCRETE(obj) blows up because it's a null pointer" 11:58
nwc10 is now out to lunch
arnsholt timotimo: As long as you've got stuff compiled with -g, backtrace gives you the backtrace to where you're at 12:05
timotimo but not an nqp-level backtrace :) 12:06
arnsholt Oh, that kind of backtrace
Not AFAIK. jnthn would know, but probably not
timotimo jnthn is teaching right now, right? 12:07
maybe he'll get some insight in the evening
FROGGS timotimo: you use original twice now... was it like that before too? 12:35
timotimo yeah 12:36
i have to cut it up into two pieces
one goes before the replacement, one goes after
FROGGS I'm sorry, but I think you need to temp_push it then 12:37
timotimo JimmyZ: told me i don't :)
oh, wait. that was for something else
FROGGS that was for rest_part 12:38
timotimo there's the commit that fixes it
dalek arVM: b2da0b7 | (Timo Paulssen)++ | / (8 files):
naively implement nqp::replace
12:44
arVM: 1522b37 | (Timo Paulssen)++ | src/strings/ops.c:
protect the original string between substring invocations
arVM: 0f2ec72 | (Tobias Leich)++ | / (8 files):
Merge pull request #64 from timo/replace_op

naively implement nqp::replace
FROGGS jnthn: it now builds m-BOOTSTRAP here using an optimized moar 13:09
diakopter timotimo: heh, if you're going to re-use rest_part like that, why need "result"? :)
13:10 cognominal__ joined
diakopter nwc10: right.. moar will crash right now on null pointers because no one's done the retrofitting for the special null-object 13:10
13:12 jnap joined
diakopter (but yes, IS_CONCRETE and friends will unfortunately need null-object checks added as well) 13:12
timotimo because i code without thinking 13:31
lizmat_
.oO( I don't paint, I hit! )
13:34
13:41 cognominal joined
FROGGS do we actually know where the null pointer comes from? 14:06
14:50 jnap joined
FROGGS gdb++ # "warning: Source file is more recent than executable." 15:00
15:03 benabik joined
jnthn FROGGS: No, but that's easy enough to do: just add a null check at that point that throws an exception and see where we are :) 15:23
(but don't commit it)
FROGGS jnthn: ahh 15:25
okay
I added a breakpoint, but yes, a common nqp-ish die() would be better :o) 15:26
FROGGS adds that to all IS_CONTRET and commits
MUHAHAHAHAA
gah! 15:28
now I am even not typing C correctly on a keyboard where that key actually works >.<
umm 15:34
jnthn: I was meant to add a MVM_panic, right?
looks like I need to pass --ll-exception?
jnthn: can't I just call dump_backtrace(tc) ? 15:36
jnthn MVM_throw_adhoc(tc, "oops"); 15:39
diakopter MVM_exception_throw_adhoc 15:40
jnthn that one :) 15:42
FROGGS src/Perl6/World.nqp:980 (blib/Perl6/World.moarvm:prefix:<+^>:13) 15:45
jnthn wat...
FROGGS WAT 15:46
no 15:49
I think I messed with the backtrace... wait a sec
jnthn Gonna head back to the hotel now, so you can have plenty of secs 15:51
bbi20 or so
diakopter jnthn: I'm sure FROGGS appreciates you giving him more secs 15:52
FROGGS 20s? uhhh
it must explode every second
>.< 15:53
now it did not explode :(
MVM_exception_throw_adhoc seems to be noop-ish 16:03
ohh, I wonder... 16:05
16:16 benabik joined
FROGGS that is the bt I got earlier using backtracestrings(): gist.github.com/FROGGS/221a6f1254a114459581 16:22
MVM_exception_throw_adhoc just does nothing :/
jnthn diakopter: argh :P 16:42
bah, it does nothing 'cus something is catching the exception if it gets thrown... 17:09
17:14 ssutch joined
FROGGS[mobile] jnthn: then my backtracestrings are right-ish 17:47
17:50 dalek joined 18:27 FROGGS joined 18:28 jnap joined
FROGGS ahh, I meant dump_backtrace() btw 18:31
jnthn: btw, it must be something in P6::W line 975-980, when I add a newline before that block, and one after it, it complains about line 981 instead 980 18:39
and it would complain about 982 if it was something after that
I can't really parse the bt though 18:40
from src/Perl6/World.nqp:981 (blib/Perl6/World.moarvm:prefix:<+^>:13)
is it possible that it compiles a ode object about prefix:<+^> ? 18:41
FROGGS comments them out in Int.pm and similar 18:42
jnthn looks 18:43
FROGGS: Oh, it's the stub code, which take sthe name of whatever it's stubbing 18:45
FROGGS jnthn: what stub code? 18:46
jnthn The dynamic comp stubb
But I dunno where the empty/null array comes from 18:47
Or is tht the top line of the backtrace?
FROGGS now it omplains about infix:<~> after commenting out:
/home/froggs/dev/rakudo/src/core/Int.pm:268:multi prefix:<+^>(Int:D \a) {
/home/froggs/dev/rakudo/src/core/Int.pm:271:multi prefix:<+^>(int $a) {
hehe is the bt: gist.github.com/FROGGS/221a6f1254a114459581
jnthn oh... 18:48
my $past := nqp::getattr($_, $code_type, '$!compstuff')[0];
It's that [0]
FROGGS so we just need to check if getattr gives us something? or do we need to fix the part that needs to put something into compstuff? 18:49
18:51 eternaleye joined
jnthn Yeah. Got a patch locally 18:51
No, it's fine compstuff is gone by then I think...
FROGGS: Pushed it. Now we're into the mast phase. 18:58
I get something about replace, but I saw that got worked on earlier...
FROGGS I think timotimo wanted to grab that task, but I think he has not started yet 18:59
jnthn I'll maybe look more after some dinner BUT I also promised somebody to finish their slides...
ah, ok
FROGGS <dalek> MoarVM: b2da0b7 | (Timo Paulssen)++ | / (8 files):
<dalek> MoarVM: naively implement nqp::replace
jnthn Anyways, nice that we now make it to one of the final compilation stages.
FROGGS hold on, that is there
jnthn Oh, I didn't pull anything yet 19:00
FROGGS yes, very nice :o)
FROGGS maps replace now 19:08
right, the next one is newexception 19:16
FROGGS tests 19:23
dalek arVM: 77490b3 | (Tobias Leich)++ | / (6 files):
implemented op newexception
19:31
FROGGS now: 19:32
Stage optimize : 39.860
Error while compiling op p6routinereturn: No registered operation handler for 'p6routinereturn'
nwc10 Stage optimize : 87.342Error while compiling op newexception: MoarVM op 'newexception' is unknown as a core or extension op 19:37
om nom nom. terminal eats newlines 19:38
FROGGS nwc10: pull moarvm :o)
nwc10 Error while compiling op p6routinereturn: No registered operation handler for 'p6routinereturn' 19:58
FROGGS right 19:59
20:03 cxreg joined
cxreg (taking to the right channel) node.js had a usage bug against libuv, not sure if it's interesting or relevant here 20:03
www.joyent.com/blog/walmart-node-js-memory-leak
github.com/joyent/node/commit/1693...5d636ce693 20:04
i don't grok the API enough to know, but it looks subtle so i thought you'd like to see it
FROGGS reads 20:05
cxreg++ 20:06
that sounds highly relevant
cxreg cool
FROGGS now I can bang my head aginst the handles again :o)
cxreg :)
FROGGS ahh, no... I misread, I thought it actually is about filehandles :o( 20:12
cxreg it's not? i thought so too 20:15
FROGGS it is about callback handles 20:16
p6routinereturn seems doable 20:21
jnthn has forgotten what it even does :) 20:23
FROGGS I would almost guess that this has something to do return from subs through a pointy 20:26
with returning*
FROGGS stubbed p6routinereturn 20:35
p6recont_ro is missing after that 20:42
jnthn Port it or stub it... :) 20:43
FROGGS I'll port p6routinereturn first I think 20:45
jnthn k
FROGGS I think I'll just stub it :o( 21:00
21:00 jnap joined
jnthn ETOOSCARY? 21:02
21:02 woolfy left
FROGGS a bit 21:02
21:04 woolfy joined
FROGGS p6finddispatcher would be next 21:37
jnthn Even stubbing all of these helps 21:38
FROGGS really?
jnthn Yeah.
FROGGS k
jnthn #cus if it's me that needs to write them, I can fill out the stubs without too much trouble
But creating them is tedious :) 21:39
FROGGS sounds good :o)
jnthn If there's any binder ones left, though, don't turn them into ops
They become methods in the Binder class in BOOTSTRAP
FROGGS k 21:40
21:53 BenGoldberg joined
FROGGS maybe I do xor tomorrow when my brane is awake again 22:52
jnthn Sounds like a good xor bad idea... 22:56
FROGGS hehe 23:02
23:23 ssutch joined
FROGGS compiles xor 23:40
it is already tomorrow, isnt it?
timotimo yeah :)
FROGGS p6stateinit would need stubbing then 23:51
timotimo can you tell to which line we get?
FROGGS no, can't tell 23:55