01:11
zostay joined
|
|||
zostay | hoelzro: i might have a better test for the async crash you tried to help me with before | 01:17 | |
hoelzro | zostay: interesting | 01:18 | |
timotimo | well, then, share it with us! :) | 01:20 | |
zostay | so, i was running a different test from you the whole time :-$ | ||
i forgot to push the last commit | 01:21 | ||
so... it's pushed now | |||
clone github.com/zostay/HTTP-Supply/ and run: perl6 -Ilib t/http-1.0.t | 01:23 | ||
the first test runs fine, but the second run chokes | |||
anyway, putting kiddos to bed, biab | |||
hoelzro builds a fresh rakudo | |||
zostay: when you say it chokes...do you get a crash? | 01:29 | ||
I'm just getting test failures | |||
zostay | zsh: abort perl6 -Ilib t/http-1.0.t | 01:49 | |
all tests should be passing | 01:50 | ||
my first run went fine, but the second failed with an abort | |||
hoelzro | zostay: which OS are you on? | 01:52 | |
timotimo | .o( and what exact rakudo, nqp, and moarvm versions ) | 01:57 | |
bbl | |||
zostay | i built a recent rakudobrew in the last couple days, building again right now, but this has been very consistent for me on this laptop and on a linux vm | 01:59 | |
happening on a brand new fresh build of nom/master/master just now | 02:04 | ||
i am gettng completely different behavior on my linode though.... hmmm | 02:09 | ||
hoelzro | zostay: which OS do your laptop and linux VM run? | 02:17 | |
zostay | aha, there we go... it was missing test data :-$ | ||
hoelzro | that fixed it? | ||
zostay | no, that made linode repeat the problem i was having rather than test failures | 02:18 | |
now linode aborts | |||
hoelzro | ahhh | ||
zostay | so, if you try a fresh pull, maybe now you'll see it? | ||
hoelzro tries | |||
nope, tests all pass =/ | 02:19 | ||
zostay | try it a second time | ||
hoelzro | zostay: which linux distro(s) are you trying on | ||
did | |||
three times | |||
zostay | it passes the first time, but fails the second and then after until the cache or whatever clears and try again later | ||
hoelzro | I just tried it about ten times, all passed =/ | 02:20 | |
zostay | OSX 10.11 is my laptop | ||
the linode is: gentoo Linux 4.1.5-x86_64-linode61 #7 SMP Mon Aug 24 13:46:31 EDT 2015 Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz GenuineIntel GNU/Linux | 02:21 | ||
the Linux VM is: Mint Mate Linux 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 GNU/Linux | 02:23 | ||
hoelzro | hmm...pretty diverse | ||
welp, I'll fire up a VM | 02:24 | ||
hoelzro builds Rakudo on FreeBSD | 02:26 | ||
I forgot how long interp.c takes to compile on clang =/ | 02:27 | ||
zostay: I got it to abort! | 02:38 | ||
I bet it's running out of fds | |||
$ ulimit -a | grep file\ descriptors | 02:39 | ||
-n: file descriptors 58284 | |||
ok, so not likely =/ | |||
zostay | \o/ | 02:40 | |
hoelzro | yay, I got a stack trace | 03:03 | |
pthread_mutex_destroy is failing (!?!) | 03:04 | ||
failed to destroy mutex: Device busy o_O | 03:06 | ||
sounds like the mutex is being free'd while locked? | 03:08 | ||
yup | 03:11 | ||
well, that ain't good. | |||
ok, it turns out that the thread that's cleaning up the mutex has still locked it | 03:23 | ||
which is...odd | 03:24 | ||
ha! now that I added some printfs on Arch, it messed up the timing enough to cause the abort! | 03:51 | ||
04:08
geekosaur joined
04:11
geekosaur joined
|
|||
hoelzro | zostay: when you get a chance, could you try with MVM_SPESH_DISABLE=1? | 04:26 | |
that seems to fix it for me | |||
it's a lock that's being locked via Lock.protect; it looks like it might be getting locked in a Promise vow as well | 05:13 | ||
I'm off to bed; I'll dig in more tomorrow | |||
06:13
geekosaur joined
08:09
domidumont joined
|
|||
zostay | hoelzro: thx... i tried MVM_SPESH_DISABLE=1 and it helps somewhat | 12:14 | |
on OS X it gets to ok 24 instead of stopping after ok 20 | |||
it doesn't make any difference on my linode | 12:15 | ||
no difference on my linux vm either | 12:23 | ||
a thread cleaning up in a bad state sounds exactly like what i found when i originally dug in with the debugger | 12:29 | ||
but i am not familiar with mvm internals, so i really didn't know where to go with that | |||
12:38
cognominal joined
|
|||
hoelzro | so I've been taking further stabs at the problem this morning | 14:14 | |
it *looks* like Lock.protect is locking in some situations without an unlock | 14:15 | ||
dalek | arVM/circular_outer_fixups: 4cef4ac | timotimo++ | src/core/bytecode.c: don't allow outer frames to create a circle there's a lot of potential for making the code cheaper |
14:16 | |
timotimo | ^- i'm not sure, but i *think* we might only have to actually inspect frames that were "fixed up" | 14:19 | |
hoelzro | yay, I was able to reproduce zostay's bug | 14:22 | |
(in a standalone script) | |||
timotimo | cool! | ||
hoelzro | this line in Lock.pm irks me a bit: CATCH { nqp::unlock(self); } | 14:23 | |
timotimo | hehehe | ||
hoelzro | shouldn't it nqp::rethrow($_) after the unlock? | ||
timotimo | it doesn't need to | ||
hoelzro | or does it already because the exception isn't "handled"? | 14:24 | |
timotimo | because there's no "default {...}" in there | ||
hoelzro | ahhh, ok | ||
timotimo | should, yeah | ||
hoelzro | timotimo: does that apply to CONTROL as well? | ||
timotimo | i think so | ||
should be easy-ish to try | |||
hoelzro | I think the bug is that CONTROL exceptions aren't caught, so no unlock happens | 14:25 | |
timotimo | well, control exceptions are resumable | 14:29 | |
that makes it very difficult to deal with them properly on a general basis | |||
i don't think we have a phaser for "execute this code when the exception has been resumed", so we can't re-lock on resumption | 14:30 | ||
and even then we'd have the lock briefly unheld while the code up the stack decides whether to resume or not | |||
hoelzro | "Trying to unwind over wrong handler" weeeeeee | 14:32 | |
hmm, I hadn't considered that | |||
that makes this *much* more complicated =/ | 14:33 | ||
timotimo | yes, very | ||
hoelzro | guess I'll file an RT | 14:37 | |
zostay: in case you want to track the issue: rt.perl.org/Ticket/Display.html?id=127865 | 14:43 | ||
zostay | thx, so if it's a control exception that's blowing things up, maybe i can work around it by avoiding the control statement that tosses it? | ||
timotimo | you might have to use .lock and .unlock manually perhaps :( | 14:44 | |
hoelzro | I just don't know which lock protect is being called on =/ | 14:45 | |
timotimo | then you can output the WHICH :) | ||
hoelzro | that I've done, but I still don't know where it gets created in Perl 6 land =( | ||
timotimo | oh | 14:46 | |
zostay | yeah, that's what i was thinking... i don't mind putting in manual locks if it's temporary until you guys can think through to a gooder solution | ||
timotimo | OK, in that case you can set breakpoints for the creation of a MVMLock or what it's called REPR | ||
and print MVM_dump_backtrace(tc) in there | |||
like, break the_line; commands; print MVM_dump_backtrace(tc); print the_address_of_the_lock; c; end | |||
14:47
camelia joined
|
|||
zostay | if i can get this to work, i can try and sneak a p6sgi talk in at yapc | 14:47 | |
rob, if you're coming to yapc, i will happily buy you lunch for digging that out | 14:56 | ||
hoelzro | ahhhh | 14:57 | |
good idea timo | |||
zostay: thanks, but sadly I don't think I'll be making to yapc this year =( | 14:58 | ||
timotimo++ # backtrace tips | 15:03 | ||
timotimo | :) | ||
inspired by how helgrind works | |||
it'll also tell you the stack trace of where something got created for every single lock-like thing whenever it's mentioned somewhere | 15:04 | ||
hoelzro | neat | ||
interesting...it's the SupplyBlockState from Supply.tap | 15:06 | ||
well, something with SUPPLY, anyway | 15:08 | ||
hoelzro goes out for coffee | 15:09 | ||
16:54
zakharyas joined
16:56
lucasb joined
|
|||
lucasb | libuv 1.9 was releases 2 days ago | 16:56 | |
can we get that for the release next week? | |||
changelog is here: github.com/libuv/libuv/releases/tag/v1.9.0 | 16:57 | ||
timotimo | how far behind are we currently? | 17:00 | |
lucasb | I think moar is at 1.8 | 17:01 | |
timotimo | ah, good, so the changelog is "exhaustive" for us | 17:02 | |
anything in particular that stands out to you? | 17:04 | ||
lucasb | I don't know if any bug fixed in libuv affected moarvm. I suggested just for the sake of keeping things updated :) | 17:05 | |
17:09
geekosaur joined
17:13
geekosaur joined
|
|||
timotimo | yes, yes | 17:13 | |
but i'm an excitement driven developer :P | |||
17:16
domidumont joined
|
|||
jnthn | I tend to feel a bit safer bumping versions of deps just *after* a release so we maximize testing time before the next one :) | 18:13 | |
Though it looks like a fairly low-risk bump in this case | |||
18:34
vendethiel joined
|
|||
timotimo | jnthn: +1/-1 on building an op that turns a buffer like VMArray into a Big Integer directly, and perhaps the other way around, too? | 18:42 | |
19:37
FROGGS joined
|
|||
jnthn | timotimo: As in, just using the bits in the array? | 19:45 | |
Also: use case? How will it be used from Perl 6? | 19:58 | ||
timotimo | building random big integers | 20:06 | |
we don't have a way to add two big buffers together and have it proper carry ... without building that yourself | 20:08 | ||
20:15
TimToady joined
20:28
zakharyas joined
20:39
Ven joined
|
|||
timotimo | i'll try to rebuild moar and see if the resume commandline from the readme works as intended | 21:15 | |
i'm looking at output in a format that i don't recognize ... well, it'll be fine. everything'll be fine. | 21:23 | ||
"warning: no new instrumentation output, test case may be useless" - i expect this happens when a bug that had been the basis for a test case to be created was fixed in the mean time and no longer causes a crash | 21:27 | ||
21:51
vendethiel joined
|
|||
timotimo | uh oh | 21:53 | |
as expected, i messed it up somehow :) |