|
00:29
ingy joined
|
|||
| FROGGS | jnthn: that might be interesting gist.github.com/FROGGS/8efa32fce9e288e9f7f0 | 00:58 | |
| jnthn: it seems like a MVMStaticFrame is exploding there | |||
| jnthn: at src/core/interp.c:2268 is an alloc in box_i | 01:12 | ||
| timotimo | so type should be temp-rooted? | 01:16 | |
| adding that doesn't prevent the pointer to past fromspace :( | 01:23 | ||
| but box_n and box_s do the same thing | 01:24 | ||
| (also, aren't registers rooted anyway?) | |||
| no change :\ | 01:28 | ||
|
01:49
jnap joined
02:04
jnap joined
02:20
eternaleye joined
02:27
eternaleye joined
03:03
ggoebel111 joined
03:39
colomon joined
04:13
jnap joined
|
|||
| FROGGS | timotimo: it must be something before box_i | 06:46 | |
| since the allocation in box_i just triggers a gc run | |||
| timotimo | ah | 07:45 | |
| FROGGS | morning timotimo | 07:50 | |
|
07:51
jnap joined
08:56
lizmat joined
09:19
lizmat_ joined
09:53
jnap joined
10:07
cognominal joined
10:42
tgt joined
|
|||
| jnthn | Note that type doesn't need rooting in box_i 'cus it's used only as args to the next line, which allocates | 10:45 | |
| FROGGS | yes, box_i just kicks the gc | 10:47 | |
| jnthn | Right | ||
| Interesting that it's a pointer to a static frame though | 10:48 | ||
| FROGGS | yeah, I skimmed through the code, but was to sleepy to see anything | 10:49 | |
| jnthn | It may (or may not) be helpful to know what was on the stack during the *previous* GC run | 10:52 | |
| hm, I see a bug | 10:56 | ||
| Though...how it'd be hit I dunno. | |||
| No, that makes no sense to be the issue... | |||
| dalek | arVM: 204495e | jnthn++ | src/core/frame.c: Add a missing write barrier. |
11:04 | |
| FROGGS tries | |||
| jnthn | I'm doubtful that does anything to help | ||
| FROGGS | no, no change | 11:05 | |
| I don't know how to look what was on the stack before :/ | 11:06 | ||
| jnthn | I thought you did that once before? | 11:08 | |
| FROGGS | yeah... | ||
| jnthn | The thing with gc_seq_number? | ||
| FROGGS reads clogs | |||
| jnthn | And conditional breakpoint on that | 11:09 | |
| dalek | arVM: 9f8d923 | jnthn++ | src/core/interp.c: Mame freshcoderef op less vulnerable to GC issues. |
11:11 | |
| FROGGS | jnthn: okay, before it did src/core/interp.c:1959 | 11:13 | |
| nqp::create | |||
| gist.github.com/FROGGS/f703c5e110204da6a54a | 11:15 | ||
| jnthn | OK, that tells us nothing really, then... | ||
| FROGGS | jnthn: I stepped through from the second breakpoint: Breakpoint 2, MVM_gc_collect (tc=0x6033e0, what_to_do=<optimized out>, gen=gen@entry=0 '\000') at src/gc/collect.c:73 | 11:17 | |
| 73 process_worklist(tc, worklist, &wtp, gen); | |||
| (gdb) finish | |||
| Run till exit from #0 MVM_gc_collect (tc=0x6033e0, what_to_do=<optimized out>, gen=gen@entry=0 '\000') at src/gc/collect.c:73 | |||
| run_gc (tc=tc@entry=0x6033e0, what_to_do=what_to_do@entry=0 '\000') at src/gc/orchestrate.c:267 | |||
| 267 for (i = 0, n = tc->gc_work_count ; i < n; i++) { | |||
| (gdb) finish | |||
| Run till exit from #0 run_gc (tc=tc@entry=0x6033e0, what_to_do=what_to_do@entry=0 '\000') at src/gc/orchestrate.c:267 | |||
| MVM_gc_enter_from_allocator (tc=tc@entry=0x6033e0) at src/gc/orchestrate.c:380 | |||
| 380} | |||
| (gdb) finish | |||
| Run till exit from #0 MVM_gc_enter_from_allocator (tc=tc@entry=0x6033e0) at src/gc/orchestrate.c:380 | |||
| MVM_gc_allocate_nursery (tc=0x6033e0, size=64) at src/gc/allocation.c:29 | |||
| 29 while ((char *)tc->nursery_alloc + size >= (char *)tc->nursery_alloc_limit) { | |||
| (gdb) finish | |||
| Run till exit from #0 MVM_gc_allocate_nursery (tc=0x6033e0, size=64) at src/gc/allocation.c:29 | |||
| 0x00007ffff7a00ada in MVM_gc_allocate_object (tc=0x6033e0, st=0x78c708) at src/gc/allocation.c:84 | |||
| 84 MVMROOT(tc, st, { | |||
| Value returned is $2 = (void *) 0x7ffff6a4cd30 | |||
| (gdb) finish | |||
| Run till exit from #0 0x00007ffff7a00ada in MVM_gc_allocate_object (tc=0x6033e0, st=0x78c708) at src/gc/allocation.c:84 | |||
| MVM_interp_run (tc=tc@entry=0x6033e0, initial_invoke=initial_invoke@entry=0x7ffff7a30330 <toplevel_initial_invoke>, invoke_data=<optimized out>) at src/core/interp.c:1960 | |||
| 1960 GET_REG(cur_op, 0).o = obj; | |||
| Value returned is $3 = (MVMObject *) 0x7ffff6a4cd30 | |||
| (gdb) finish | |||
| Run till exit from #0 MVM_interp_run (tc=tc@entry=0x6033e0, initial_invoke=initial_invoke@entry=0x7ffff7a30330 <toplevel_initial_invoke>, invoke_data=<optimized out>) | |||
| at src/core/interp.c:1960 | |||
| Breakpoint 1, process_worklist (tc=tc@entry=0x6033e0, worklist=worklist@entry=0x53fa7f0, wtp=wtp@entry=0x7fffffffd910, gen=gen@entry=1 | 11:18 | ||
| err | |||
| sory | |||
| gist.github.com/FROGGS/f703c5e1102...ile-2-bash | |||
| >.< | |||
| jnthn | ... | ||
| Sure, there you're just running it until it hits the next GC, though, I guess... | 11:19 | ||
| FROGGS | before the nqp::create it did OP(takeclosure) | 11:20 | |
| jnthn | takeclosure *does* do stuff with static frames... | ||
| FROGGS | yeah | ||
| I'll print its pointer to see if this one is it | 11:21 | ||
| jnthn | Could always try a build with frame.c not optimized, too... | 11:23 | |
|
11:24
colomon joined
|
|||
| FROGGS | okay, MVM_frame_takeclosure seems involved | 11:25 | |
| the reported pointer is `closure` | |||
| jnthn | The out-dated pointer? | 11:27 | |
| FROGGS | yes | ||
| the one from "Heap corruption detected: pointer 0x7ffff69fc650 to past fromspace" | |||
| jnthn | o.O | ||
| FROGGS | this pointer is reported five times in MVM_frame_takeclosure due to my print statement | 11:28 | |
| four times with different code pointers, but the fifth code pointer is indentical to the fourth | 11:29 | ||
| jnthn | But...closure is allocated each time in that routine... | ||
| FROGGS | so we are taking a closure of the same code I guess? | ||
| jnthn | Are we talking about code or about closure here? | ||
| Yes, that's very likely, but it's code I'd expect to see repeated, not closure... | 11:30 | ||
| Unless this is entire execution? | |||
| FROGGS | gist.github.com/FROGGS/2e518058dcd3661d5c4e | 11:31 | |
| and that is for the entire compilation of m-BOOTSTRAP | 11:32 | ||
| jnthn | Can you print the gc_seq_number out for each of those too? | 11:35 | |
| FROGGS | k | 11:36 | |
| jnthn: updated gist.github.com/FROGGS/2e518058dcd3661d5c4e | 11:39 | ||
| jnthn | Ah, they're spread over many runs... | 11:47 | |
| 150...and which is the seq number where we crash? | 11:48 | ||
| FROGGS | jnthn: 180 | 11:51 | |
| jnthn | Whoa, that's still a good way off | 11:52 | |
| Can you maybe try dong a print like that in the allocate function of MVMStaticFrame.c? | |||
| FROGGS | k | ||
| jnthn | So we can catch every allocation of them? | ||
| FROGGS | ahh, it allocates an MVMCode, not MVMStaticframe | 12:00 | |
| jnthn | takeclosure? Yes... | ||
| FROGGS | should I print every allocation of MVMStaticFrame then? | 12:01 | |
| jnthn | Well, every matching one, yes | ||
| FROGGS | there are not too many as it seems | ||
| jnthn | No, there shouldn't be many in total | ||
| So could just do all then filter it | |||
| FROGGS | there is no matching one | 12:02 | |
| ohh, you mean the ones that match closure->body.sf | |||
| jnthn | No, that match the one in the error | 12:03 | |
| FROGGS | no match | ||
| MVMCode->allocate matches though | 12:04 | ||
| jnthn: here is a better gist: gist.github.com/FROGGS/01405a4286863c673fbc | 12:07 | ||
| JimmyZ | jnthn: Did you see my message to you? :P | 12:15 | |
| jnthn | JimmyZ: About the probably unrequired flatten_ropes call? | 12:16 | |
| JimmyZ | yeah | ||
| jnthn | I suspect you're right... | ||
|
12:26
colomon joined
12:56
jnap joined
|
|||
| nwc10 | I have a SEGV after stage mbc with: | 13:00 | |
| 238 if (handle->type == UV_SIGNAL) | |||
| $1 = (uv_handle_t *) 0xfff7ddbe60ddc040 | |||
| running with valgrind | |||
| expect more in about 3 hours | |||
| FROGGS | so, handle is null I guess | 13:02 | |
| nwc10 | um, it's garbage, not NULL. | 13:03 | |
| FROGGS | that might be the issue jnthn++ pointed out last night | 13:05 | |
| jnthn | Quite possibly, yes. | 13:08 | |
|
13:33
camelia joined
|
|||
| FROGGS | jnthn: I just think the printed pointers are coincidences... the printed ones have repr MVMCode while the exploding one show MVMStaticFrame | 14:09 | |
| jnthn | Sonds like :( | ||
| Though, maybe the printed ones point us to where we store something that later becomes invalid... | 14:10 | ||
|
14:17
tgt joined
14:35
lizmat joined,
jnap joined
14:46
ggoebel111 joined
|
|||
| FROGGS | jnthn: it appears in GCDEBUG: gist.github.com/FROGGS/01405a4286863c673fbc | 15:52 | |
| or, hmmm | 15:53 | ||
| no, the exploding one has repr id 23 | 15:54 | ||
| TimToady | FROGGS: if you're using irssi, you should know about paste_verify_line_count, which prevents most accidental pastes | 16:06 | |
| FROGGS is an XChat user | |||
| but I might switch some day | 16:07 | ||
| arnsholt | Yeah, the "are you sure you want to paste all of this junk" functionality in irssi is a lifesaver | 16:10 | |
| diakopter | yeah but it doesn't always work for me | 16:37 | |
| TimToady has his set to 1, so sometimes it gets false positives on echo lag, but rarely produces a false negative | 16:39 | ||
| TimToady doesn't mind typing an extra ^K occasionally to confirm | 16:40 | ||
|
17:16
lizmat joined
|
|||
| dalek | arVM: 9bb18f5 | (Tobias Leich)++ | src/gc/collect.c: fix s/%d/%p/ in GCDEBUG and print reprid in two others |
17:42 | |
| FROGGS | jnthn: is there something else in that exploding sf that gives us useful information? | 17:45 | |
| jnthn | Not that I can immediately think of :( | 17:46 | |
| FROGGS | :/ | ||
| gc bugs are really the worst things out there | 17:47 | ||
|
18:01
ssutch joined
18:11
colomon joined
|
|||
| FROGGS | btw, it seems like to happen after switching from<=>tospace | 18:43 | |
| because I added a print stmt in MVMStaticFrame->allocate, and after a block of similar mem addresses, there is one that sticks out and then the crash | 18:45 | ||
|
18:51
lizmat joined
|
|||
| nwc10 | bad news - valgrind only shows the base64_* errors | 18:59 | |
| so I think that that means that "GC bug" is the most likely | |||
|
20:03
jnap joined
20:40
lue joined
21:11
lizmat joined
21:33
colomon joined
22:03
colomon_ joined
22:05
jnap1 joined
23:48
lizmat joined
|
|||