|
github.com/moarvm/moarvm | IRC logs at irclog.perlgeek.de/moarvm/today Set by moderator on 27 September 2013. |
|||
|
00:55
cognominal joined
01:08
benabik joined
|
|||
| dalek | arVM: a547c80 | jimmy++ | nqp-cc/src/QASTRegexCompilerMAST.nqp: proper handling of classes an zerowidth, jnthn++ |
01:46 | |
|
02:05
FROGGS joined
06:56
FROGGS joined
07:02
FROGGS joined
|
|||
| dalek | arVM/gcorch: a547c80 | jimmy++ | nqp-cc/src/QASTRegexCompilerMAST.nqp: proper handling of classes an zerowidth, jnthn++ |
07:32 | |
| arVM/gcorch: 4e236a5 | diakopter++ | nqp-cc/src/QASTRegexCompilerMAST.nqp: Merge branch 'master' of github.com:MoarVM/MoarVM into gcorch |
|||
| diakopter | jnthn: you'll be glad to know I'm writing up a changelog for the gcorch branch | 07:51 | |
| should aid the diff review. | |||
| .ask TimToady ltm s05 patch - "whitespace is the archtypical" .. archtypical? or archetypical? or archetypal? | 08:06 | ||
| yoleaux | diakopter: I'll pass your message to TimToady. | ||
| moritz | does 'make' in nqp-cc/ actually build an nqp? | 08:40 | |
| if yes, where is it? if no, how can I run moarqp? | 08:41 | ||
| JimmyZ | ../moarvm nqp.moarvm | 08:42 | |
| moritz | JimmyZ: thanks | ||
| diakopter | :) | 08:43 | |
| dalek | arVM/gcorch: ce534ce | diakopter++ | src/gc/orchestrate.c: finish merging jnthn's patch |
09:02 | |
| tadzik | I must draw that | 09:08 | |
| diakopter | O_O | ||
| masak .oO( what's an Orch, and what is it doing in the GC? ) | 09:09 | ||
| tadzik | imgur.com/8hkkbnb there | 09:14 | |
| masak | :P | 09:17 | |
| those horses all look identical :) | 09:18 | ||
| moritz | free the s-tables? | 09:19 | |
| tadzik | stables | 09:20 | |
|
09:20
grondilu joined
|
|||
| tadzik | masak: the first one I drew was so perfect, that trying to draw another would just result in a worse horse :) | 09:21 | |
| masak .oO( reaching the saddle point of perfection ) | 09:22 | ||
| moritz tries to come up with a pun about warsow and worse horse, and fails | 09:23 | ||
| jnthn | tadzik++ | 09:24 | |
| masak | moritz: making horse puns for a living would be fun, but unfortunately it does not result in a stable income. | 09:26 | |
| moritz | masak++ | 09:30 | |
| tadzik | :> | 09:32 | |
| diakopter bridles at the humor | 09:36 | ||
| masak .oO( just some harness joking around ) | 09:41 | ||
| jnthn | saddly, I can't think of any more horse puns... | 09:45 | |
| masak | I could keep doing them 'til I'm horse. | ||
|
09:45
cognominal joined
|
|||
| diakopter | nay. | 09:46 | |
| tadzik | neigh | 09:47 | |
| jnthn | Ƅhnej | 09:49 | |
| FROGGS | masak: you say careering horses gives you a better income as the career as a prance.... err, stand-up comedian? | 09:55 | |
| masak | I guess I'm saying... neither of these things should enter your curriculum. | 10:05 | |
|
10:19
not_gerd joined
|
|||
| not_gerd | o/ | 10:19 | |
| if there are no objections, I'll start implementing gist.github.com/gerdr/aabd97a9637e0720ccf4 tonight in preparation for adding extops | |||
| tadzik | s/of of/of/ :) | 10:20 | |
| not_gerd | I don't think that will stop me from writing the code ;) | 10:21 | |
| tadzik | I hope not :) | ||
| jnthn | not_gerd: Gotta go to a boring sales meeting now...will look at it when I'm back :) | 10:25 | |
| & | |||
| not_gerd | take your time - I won't start with actual coding until much later | 10:27 | |
| FROGGS | not_gerd: I don't think I can care about `make install` today :/ | 10:34 | |
| not_gerd | FROGGS: no worries - if it becomes an issue, I'll do it | 10:37 | |
| FROGGS | not_gerd: thank you | 11:25 | |
| timotimo | .o( any additional one would just have been a whorse ) | 12:39 | |
|
13:01
arnsholt joined
13:10
benabik joined
|
|||
| not_gerd | bye, #moarvm | 13:23 | |
|
13:23
not_gerd left
15:57
FROGGS joined
16:37
not_gerd joined
|
|||
| not_gerd | ~~ | 16:37 | |
|
16:37
jnap joined
|
|||
| diakopter | hi :) | 16:39 | |
| not_gerd | ”Hola! | 16:42 | |
| not_gerd wonders what the Ā” operator should do | 16:43 | ||
| TimToady | it's says you're about to take a factorial | ||
| *it | |||
| timotimo | Āæque? | 16:44 | |
| TimToady | actually it was one of the characters I was looking at for replacing lift with placeholderish syntax | ||
| though Ā© better indicates "caller" | 16:45 | ||
| TimToady wonders if Apple sues people for saying ”Pad! | 16:47 | ||
|
17:04
jnap joined
17:10
jnap joined
17:28
jnap joined
18:27
grondilu joined
18:32
lizmat joined
|
|||
| dalek | arVM: be0fe24 | jnthn++ | src/core/interp.c: Fix STable claiming. With this, t/serialization/01-basic.t now fully passes. |
18:59 | |
|
18:59
lizmat joined
19:00
sorear joined
|
|||
| diakopter | o_O | 19:00 | |
| jnthn | 1..24 pass of 02-types.t too | ||
| Now need to fix 25..31 ;) | 19:01 | ||
|
19:01
ssutch joined
|
|||
| diakopter | o_O | 19:01 | |
| TimToady | careful, you'll be done with rakudo by the end of the day at this rate | 19:02 | |
| diakopter | and my eye will pop | 19:04 | |
| jnthn | Guess if progress is that awesome I've got time for a walk... :) | 19:05 | |
|
19:05
lizmat_ joined
|
|||
| jnthn | bbiab & | 19:05 | |
| FROGGS | \\o/ | ||
| awesome these days are | 19:06 | ||
|
19:11
ssutch joined
19:17
lizmat_ joined
|
|||
| timotimo | so, i understand this correctly? we now have a stage0 in .moarvm generated with the cross compiler and we're about to make that stage0 compile a stage1, so that we can build a stage2 with that? | 19:17 | |
| diakopter | "about to" is 1-2 weeks I'm sure | 19:18 | |
| FROGGS | timotimo: I think that should be right, yes | 19:19 | |
| and then we will use that as stage0 I suppose, when all ops have settled | |||
| timotimo | i thought all that's needed now is serialization? and jnthn is about to make that work tonight :P | 19:20 | |
| FROGGS | *g* | ||
| nwc10 | win 32 | 19:22 | |
|
19:23
lizmat joined
19:27
johnny5_ joined
19:28
lizmat_ joined
19:44
foo_bar_baz joined
19:52
lizmat_ joined
19:53
japhb_ joined
|
|||
| jnthn | ok, let's see if I can figure out 02-thingy.t | 19:58 | |
| diakopter sends you positive energy | 19:59 | ||
| jnthn | Serialization Error: missing static code ref for closure | ||
| Hm :) | |||
| diakopter | sounds like a bug :) | ||
| benabik | An error, at least. | 20:00 | |
| diakopter | heh. | 20:01 | |
|
20:03
lizmat joined
|
|||
| dalek | arVM: 310ccae | jnthn++ | src/core/interp.c: scsetcode needs to set code object's SC Fixes remaining failures in t/serialization/02-types.t. |
20:04 | |
| diakopter | jnthn: the recent fixes there have seemed surprisingly simple/similar.. ;) but I'm sure not trivial to find. | 20:05 | |
| benabik | Probably easier for jnthn, given that he's implemented this 3(?) times? | ||
| jnthn | Plus designed the thing in the first place... :) | 20:06 | |
| So I've got a better picture of how it's *meant* to work, which is decidedly helpful. | |||
| benabik | Well, designing something doesn't always tell you where to look in the implementation... | ||
| diakopter | jnthn's gotten accustomed to my mistkae patterns | 20:07 | |
| jnthn | 1..4 of 03-closures.t pass right off with that last fix. So, 5..9 there to go... :) | 20:08 | |
|
20:08
japhb joined
|
|||
| diakopter is flabbergasted you haven't fixed bugs in my half of serialization.c yet | 20:09 | ||
| timotimo | \\o/ | ||
|
20:11
jnap joined
|
|||
| diakopter | jnthn: master is telling me Unhandled blocktype QAST::Block<1400753610904153498>.blocktype | 20:13 | |
| error error | 20:14 | ||
| jnthn | diakopter: yeah :) | ||
| diakopter | oh.. | ||
| jnthn | diakopter: Looks like interpolation fail | ||
| diakopter | there's a Makefile thingie missing for nqp-mo.pm | ||
| jnthn | or rather, expecting Perl 6 interpol semantics | ||
| When NQP has simpler ones | |||
| diakopter | this is the 2nd time it's tripped me up | ||
| TimToady | someday when our optimizers are up to snuff, we can just start porting it all to Perl 6, one of those sister languages to NQP :) | 20:17 | |
| timotimo | interpol, eh? | ||
| jnthn | TimToady: I'm more scared of circularity sawing there... :) | 20:19 | |
| I'm still, at this point, deeply glad that Rakudo is *not* a bootstrapped compiler and only NQP does that. | |||
| TimToady | doubtless understanding circularity better is one of the prerequisites to getting our optimizers up to snuff | 20:20 | |
| diakopter | jnthn: I'm kinda stumped on this build error. | 20:21 | |
| C:\\Users\\mwilson\\src\\MoarVM\\nqp-cc\\install\\bin\\nqp.exe nqp-moar-cc.nqp --setting=NULL --target=mbc --output=nqp-mo.moarvm nqp-src\\nqp-mo.pm | |||
|
20:26
jnap joined
|
|||
| jnthn | diakopter: Hm, is f->context_object just caching the context wrapper? | 20:27 | |
| diakopter | wha | ||
| oh, I think so, yes | 20:28 | ||
| jnthn | oh...heh | ||
| 0xbaadf00d...that's not a great point :) | |||
| *pointer | |||
| diakopter | well | ||
| oh, did I forget to mark that one | |||
|
20:29
ssutch joined
|
|||
| jnthn | no, forgot to zero it in the first place | 20:29 | |
| we don't memset(0) on frames 'cus we touch everything | |||
| or near enough | |||
| diakopter | o | 20:30 | |
| so anyways, any idea on how to build the cross-compiler? | |||
| jnthn | but yeah, you may have forgot to mark it too :P | ||
| diakopter | well it's not just a cache | ||
| it needs to be unique per frame | |||
| so it's enforcing that | 20:31 | ||
| it's so it can store a sc, mostly, I think. and used an object tomake it consistent | |||
| iirc. | |||
| jnthn | Yeah, clearing it at frame allocation should do it. | ||
| On JVM I just shoved an SC pointer in the frame itself. But still needs care. | 20:32 | ||
| We don't re-use them on JVM at present... | |||
| diakopter | jnthn: any ideas on how I can build the cross compiler? | 20:35 | |
| FROGGS: well our stage0 is really nqp's stage3 | 20:37 | ||
| dalek | arVM: 4092f6e | jnthn++ | src/ (2 files): Ensure context_object is NULL and marked. Avoids one segfault in closure serialization. |
||
| arVM: e79e004 | jnthn++ | src/6model/serialization.c: Better error reporting. |
|||
| arVM: 709dce3 | jnthn++ | src/6model/serialization.c: Pass correct object; fixes 03-closures.t. |
|||
| jnthn | diakopter: What's keeping you from building it? | ||
| diakopter | that error I pasted | ||
| for that command I pasted | |||
| jnthn | diakopter: What branch? | ||
| diakopter | master like I said :P | 20:38 | |
| jnthn | o.O | ||
| FROGGS | diakopter: I thought it is just a copy of stage2 | ||
| jnthn is on master too and it builds here... :S | |||
| diakopter | make realclean? | ||
| jnthn | diakopter: nqp --version ? | ||
| diakopter | This is nqp version 2013.09-48-g62b8cab built on parrot 5.5.0 revision RELEASE_5_5_0 | ||
| jnthn | hm, that matches mine exactly too | ||
| Doing realclean | 20:39 | ||
| btw, all t/serialization/*.t pass now :) | |||
| diakopter | wow. | ||
| FROGGS | jnthn++ | ||
| yay!! | |||
| benabik | O.o | ||
| jnthn | diakopter++ # master transliterator :) | ||
| benabik | diakopter++ jnthn++ | 20:40 | |
| diakopter | jnthn: did you like how I left the parrot macros in :) | ||
| jnthn | um... | ||
| diakopter | :X | ||
| jnthn | :) | 20:41 | |
| diakopter | >.< | ||
| jnthn | So that's where they're from... :P | ||
| diakopter | I'm sure rakudo will expose more errors that don't have test coverage | ||
| jnthn | bootstrapping NQP may also :) | 20:42 | |
| benabik | Erm. "t/serialization/01-basic.t ..... moarvm(41865) malloc: *** error for object 0x7ffc40a35808: incorrect checksum for freed object - object was probably modified after being freed." | 20:44 | |
| diakopter | hee | ||
| configuring with clang && instrumentation then running with the asan prettifier will help solve that | 20:45 | ||
| asan_symbolize | |||
| jnthn | diakopter: The realclean and re-bulid worked for me... | 20:46 | |
| not_gerd | did anyone here try out the clang visual studio integration, btw? | ||
| diakopter | I installed it | ||
| not_gerd | there are shiny new windows binaries for clang | ||
| diakopter | but haven't tried it | ||
| BinGOs | o.O | 20:47 | |
| diakopter | this is what I have on ubuntu btw.. Ubuntu clang version 3.4-1~exp1 (trunk) (based on LLVM 3.4) | ||
| (which includes the awesome asan_symbolize) | |||
| dalek | arVM: 746bdfa | jnthn++ | nqp-cc/tools/build/Makefile.in: Add serialization tests to selftest. |
20:48 | |
| benabik | clang: error: '-fsanitize-undefined-trap-on-error' required with '-fsanitize=address' option | ||
| clang: error: unsupported argument 'address' to option 'fsanitize=' | |||
| diakopter | too old clang? | 20:49 | |
| benabik | Is there a simple way to add to CFLAGs? | ||
| not_gerd | edit the Makefile ;) | 20:50 | |
| benabik | So no | ||
| jnthn | CFLAGS = ... | ||
| Looks pretty easy to me :) | |||
| benabik | Apparently too old a clang. Xcode seems to use 3.3 and Asan is 3.4(?) | 20:51 | |
| diakopter | I thought there was a new xcode like last week | 20:52 | |
| benabik | Yeah, but Apple (like many large vendors) moves up versions slowly | 20:53 | |
| diakopter | but Apple *makes* clang | ||
| its chief architect is now the vp head of the xcode division | 20:54 | ||
| jnthn: I pulled to master and it seems to be working now | |||
| (oops, osrry) | |||
| jnthn | diakopter: hm, ok | ||
| benabik | Doesn't keep the release engineers from complaining if you try to change the version of something. I bet 10.9 will upgrade. | ||
| jnthn | So, now to try and make --target=mbc work... | 20:57 | |
|
20:58
donaldh joined
|
|||
| benabik | At least it's reliable. Although gdb just tells me it's trying to allocate a page in the GC. | 20:59 | |
| In stub_objects, if that's informative. | 21:00 | ||
| dalek | arVM/dll: ec3339c | (Gerhard R)++ | / (18 files): Start implementing DLL support Symbols are still stubbed. |
21:01 | |
| not_gerd | so, I did get some hacking in | 21:02 | |
| jnthn | not_gerd++ | ||
| benabik: Hmm, that's the point that mallocs though, thing is what had it before... :) | |||
| benabik | jnthn: Right. | 21:03 | |
| benabik doesn't really have the time to build a new clang to get asan | |||
| not_gerd | if we want to keep cgoto performing well, we can't add extops to the opcode space, though, but would need to dispatch from a single op | 21:04 | |
| ie a single extop instruction which takes the extop id as first argument (and a variable number of remaining args) | 21:05 | ||
| thoughts? | |||
| jnthn | :/ | 21:07 | |
| Not too fond of an extra 2 bytes on every extop in the bytecode. | 21:08 | ||
| diakopter | not_gerd: nah you can inject placeholders for all the unused ones :) | ||
| jnthn | Well, you could resize the labels table, yes :) | 21:09 | |
| And just point 'em all at the extop label :) | |||
| diakopter | right | ||
| not_gerd | for a reasonable number of extops, just adding dummy targets could work out | 21:10 | |
| jnthn: I could resize the table, but how would I inject the labels into the code ;) | |||
| no JIT yet | |||
| diakopter | just on startup | 21:11 | |
| benabik | void *extop_label = &&OP_extop; | 21:12 | |
| Then insert extop_label into the jump table, and the OP_extop code handles dispatching to function. | 21:13 | ||
| jnthn was thinking of what benabik said, yes. | |||
| diakopter too, ftw | |||
| jnthn | for the win? :) | 21:14 | |
| diakopter | yeah :P | ||
| tadzik | I always wondered, isn't "for the win" a grammar fail of sorts? | 21:16 | |
| diakopter | well it's an appendix | 21:17 | |
| tadzik | appendix? | 21:18 | |
| diakopter | something appended? | 21:19 | |
| tadzik: good thing I didn't make reservations for yosemite, since it's now closed due to USA govt "shutdown" | 21:20 | ||
| tadzik | oh shite | ||
| soooooo, is anyone guarding it? :> | 21:21 | ||
| jnthn | :P | 21:22 | |
| jnthn is quite happy not to live under a political system where the majority vote to re-elect a president who set a policy, and those who lost the election get to hold the country ransom 'cus they don't like the policy anyway... | 21:23 | ||
| benabik | tadzik: Police are "essential" (although I wonder if their paychecks are...) | 21:24 | |
| diakopter | jnthn: erm the president doesn't set policy | 21:26 | |
| benabik | Well, he sets policy but not law. >.> <.< | 21:27 | |
| Surprising number of regulations are solely under the control of the Executive. | |||
| jnthn | diakopter: Right, I'm sure obamacare has nothing to do with obama :P | ||
| diakopter | I didn't say that; I'm saying the Congress had to vote for it | ||
| TimToady | well, originally it was romneycare :) | ||
| diakopter | right | ||
| jnthn | hah :) | 21:28 | |
| TimToady | the ironies in all this is too deep for words | ||
| diakopter | but yes it's a hostage/blackmail/ransom situation | 21:29 | |
| but they do that all the time | |||
| usually on smaller thingies. | |||
| TimToady | at the moment, the democrats and moderate republicans are both content to pursue a strategy of letting the tea party marginalize itself further | ||
| eventually the money will walk away from the tea party, even if they are still gerrymandered to get elected | 21:30 | ||
| tadzik | well, at least you guys aren't discussing an airplane that fell off the sky 4 years ago... | ||
| benabik | Heh. Australia shut down in '75 and the Queen just fired the entire Parliament. | 21:32 | |
| diakopter | the even stupider thing is they don't have the money to continue operating, obamacare or not | ||
| grondilu remembers that few years ago Belgium has had no government during a year or two (don't remember how long exactly). Life went on. | 21:33 | ||
| diakopter | were there a million furloughed workers? | ||
| jnthn | Are there a million people in Belgium? ;) | 21:34 | |
| (yes, I know, there's probably about 10 million or so... :)) | 21:35 | ||
| A million furloughed workers would be a rather incredible chunk of the working population though :) | |||
| grondilu | well, I should shut up anyway, as I pretty much don't know what this shutdown stuff is about. | ||
| dalek | arVM/gcorch: be0fe24 | jnthn++ | src/core/interp.c: Fix STable claiming. With this, t/serialization/01-basic.t now fully passes. |
21:36 | |
| diakopter | bah | ||
| jnthn | oh noahs! | 21:37 | |
| TimToady | wb? | ||
| diakopter | fark. | ||
|
21:37
dalek joined
|
|||
| jnthn | phew :) | 21:37 | |
| dalek | arVM: 73403d0 | jnthn++ | nqp-cc/src/QASTCompilerMAST.nqp: Fix serialization string heap code-gen. Just nabbed a fix from JVM version. |
21:39 | |
| arVM: bf63b53 | jnthn++ | / (7 files): Add and map getscdesc op. |
|||
| arVM: a42d053 | jnthn++ | nqp-cc/src/QASTCompilerMAST.nqp: A couple more deserialization code-gen fixes. This gets --target=mbc to produce MAST for a small example; next fail is in bytecode generation. |
|||
|
21:40
flussence joined
|
|||
| grondilu | .mbc is 'MoarVM Byte Code'? How is it different from .moarvm | 21:44 | |
| ? | |||
| diakopter | it's not | ||
| just a fossil naming convention kept for .. convention | 21:45 | ||
| grondilu | k | ||
| diakopter | inherited from the squawker | ||
| timotimo | the squawker is the parrot-moarvm crosscompiler? | 21:52 | |
| jnthn | My invocation is --target=mbc --output=foo.moarvm, fwiw :) | 21:53 | |
| timotimo | hehe | ||
| jnthn | That's where I'll be bug hunting next, anyways. :) | ||
| not_gerd | good night o/ | ||
| diakopter | o/ | ||
| jnthn | 'night, not_gerd | ||
| Getting that working is next step to being able to work on bootstrap | |||
| diakopter | I almost want to work on master again to let the gcorch branch simmer a bit | ||
| jnthn: did you see my changelog branch diff? | 21:54 | ||
| jnthn | (and it shouldn't be much to get it to work...maybe I nail it tomorrow) | ||
| diakopter: Yeah, I wasn't sure what all of it meant :) | |||
| diakopter | just what it said! ;) | ||
| jnthn | well, the last bit confused me | 21:55 | |
| diakopter | jnthn: and maybe I steal the rest of mbc from you tonight :P | ||
| jnthn had imagined a "flat" bunch of threads rather than parent/child relations | |||
| diakopter | they are flat.. | ||
| but a thread has to survive at least 1 gc run anyway | 21:56 | ||
| since it is the gc that cleans them up | |||
| jnthn | ok | ||
| diakopter | (because it has to be the one to do it) | ||
| jnthn | "a worker thread sorts the worklist it receives by the allocating thread_id of the pointers' targets" | ||
| I'm curious why we aren't just passing the pre-categorized work? :) | |||
| diakopter | cuz theoretically this saves a bunch of allocations and awakenings/check-locations, and sorting takes like 1 ns | 21:58 | |
| in high parallel situations anyway | |||
| jnthn | ok | 21:59 | |
|
22:00
not_gerd left
|
|||
| diakopter | jnthn: can I have 10 min of your time to glance at gist.github.com/diakopter/7b70423d7db7de3fcd72 | 22:03 | |
| jnthn | diakopter: Those are ones that blow up on gcorch? | 22:04 | |
| diakopter | jnthn: I'm at a loss for where to start | ||
| yeah | |||
| any tips for where to start looking would be awesome | |||
| jnthn | diakopter: The files that fail largely strike me as larger ones. | ||
| diakopter | yeah, I suspect they are ones that are surviving 10 gc runs | 22:05 | |
| jnthn | diakopter: Could it possibly be that only those make it to a gen2 collection? | ||
| Turning on GC orch debugging should tell... | |||
| diakopter | yeah | ||
| jnthn | Well, or it used to. I dunno current state. :) | ||
| diakopter | yeah :P | ||
| but.. | |||
| jnthn | Next question is, does it segv inside of GC? or after it? | 22:06 | |
| diakopter | after | ||
| interpreter gets a pointer to a zeroed object | |||
| jnthn | Is the pointer it segfaults on in either semispace? | ||
| *into | |||
| diakopter | how do I tell | ||
| jnthn | Look at tc->fromspace and tc->tospace or so | 22:07 | |
| And add on to them the nursery size | |||
| (to get end of each) | |||
| And see if the pointer is in that range. | |||
| diakopter | oh noes. | ||
| my vs has decided to stop being able to attache to processes. | |||
| jnthn | If not (I'm guessing *not* if we're looking at a gen2 issue) then it must be into GC | ||
| s/GC/gen2/ sorry | |||
| Or just junk | 22:08 | ||
| What kind of pointer is it, ooc? To an object, or an STable? | |||
| diakopter | objet | ||
| it always fails in the same place | |||
| jnthn | (vs) that's invonceneint... | ||
| diakopter | array push | ||
| jnthn | oh, and array's memory is zeroed...hm | 22:09 | |
| The other thing you can do to maybe trigger it in a smaller case is just set the gen2 ratio to 1 | |||
| So it does a gen2 collect every time. | |||
| diakopter | heh, ok | ||
| jnthn | It'll then probably explode on more things, but hopefully on things with a smaller overall heap | ||
| Or maybe one of the failure modes gives mroe clues | |||
| Is it always array push in all the tests? | |||
| diakopter | I think so | 22:10 | |
| jnthn | hmmm | ||
| diakopter | makes me think it's some particular array | ||
| jnthn | I was gonna say, could it be one of the global ones, but it's strange we'd be pushing to any built-in thingy... | ||
| I then wondered about something we deserialized which are directly gen2 allocated | 22:11 | ||
| But that also seems odd. | |||
| It sounds like *something* that points to an array ends up unrooted, anyways... | |||
| diakopter | erm | ||
| vs is now debugging | |||
| but I'm getting source lines interspersed with machine ode | 22:12 | ||
| code | |||
| jnthn | o.O | ||
| Right click, is there some "show disassembly" thing? | |||
| diakopter | oh heh. | ||
| nm back to normal | |||
| erm the object isn't zeroed | |||
| it has a threadid, size, and st | 22:13 | ||
| elems is 3, start is 0, ssize is 8, but slot is 0 | |||
| so what would null slots but leave the rest alone | 22:14 | ||
| jnthn: ? | 22:16 | ||
| jnthn | ... | ||
| Would a wrong call to gc_free do it? | |||
| diakopter | yep | 22:17 | |
| jnthn | Then it's likely that. | ||
| diakopter | what could cause that | ||
| jnthn | The object not being marked, and then the GC freeing it, I'd imagine. | ||
| So it sounds like it's "just" a lack of marking | 22:18 | ||
| diakopter | I'm having trouble imagining what could've had an effect on that in my branch | ||
| jnthn | You could be unlucky enough to have moved memory around enough to trigger it... | ||
| diakopter | but it's not doing anything differenly in the single-threaded case, I thought | 22:19 | |
| jnthn | Hm, true | ||
| I mean, what I said would have to imply memory corruption... | |||
| hmm | 22:20 | ||
| Did you manage to confirm it's a pointer into gen2 btw? | |||
| diakopter | the verbose instruction tracing output doesn't help since it outputs more than 4GB in the first 400ms worth of untraced run | ||
| jnthn | See src/gc/debug.h for a macro that I sometimes use that may be inspiration... | 22:21 | |
| diakopter | 3cc55c55b0 | ||
| fromsapce 0x0000003cc54cb040 | |||
| tospace 0x0000003cc56d3040 | 22:22 | ||
| MVM_NURSERY_SIZE 2097152 | |||
| jnthn | r: say 1025392 < 2097152 | 22:23 | |
| It's into fromspace. | |||
| That should never happen. | |||
| diakopter | :P | 22:24 | |
| jnthn | So, not gen2 specific issue, seems... | ||
| To see where it's going on in the code, use the macro in debug.h in an if statement, and call MVM_panic. | |||
| diakopter | but where? | 22:25 | |
| jnthn | This will give a backtrace, which may help us understand where we are and what array we're talking about | ||
| It's happening in a push, yes? | |||
| diakopter | er, at_pos | ||
| jnthn | Is it from a push op from interp.c? | ||
| diakopter | atpos_o | ||
| jnthn | If so jsut stick if int there... | ||
| Yeah | |||
| oh, it's easier even | 22:26 | ||
| MVM_ASSERT_NOT_FROMSPACE(tc, obj); | |||
| In that op | |||
| You'll need to #include gc/debug.h too. | |||
| diakopter | Collectable in fromspace accessed | 22:29 | |
| gist.github.com/diakopter/f186647c9522cdcbcfb0 | |||
| o_O | |||
| line no seems off | 22:31 | ||
| jnthn | Presumably $cur_candidate := @candidates[$cur_idx]; though... | 22:32 | |
| diakopter | <shrug> | 22:33 | |
| jnthn | It's somewhat suspect we end up calling .dispatch too | 22:34 | |
| We really should be hitting the multi-dispatch cache... | |||
| unless this is really early on in QAST -> MAST | 22:35 | ||
| diakopter | last gc seq was 12 | 22:36 | |
| diakopter turns on gc orch | |||
| jnthn | I wonder if it's a write barrier failure | ||
| diakopter | debugging | ||
| jnthn | That is | ||
| @!candidates is computed and stashed in a gen2 object | 22:37 | ||
| diakopter | yeah | ||
| jnthn | uh, $!dispatch_order is the attr | ||
| @candidates is pulled from it | |||
| diakopter | wut. | ||
| wait... (./NQPCOREMoar.setting.moarvm:dispatch:4294967295) | 22:38 | ||
| that's... a large bytecode | 22:39 | ||
| jnthn | That number is often wrong... | ||
| even in master | |||
| diakopter | yeah :( | ||
| but it uses that number to get the other numbers | 22:41 | ||
| jnthn | oh...but dispatch is the right sub name...and the NQP line nubmer makes sense... | 22:45 | |
| diakopter | sort of | ||
| jnthn: any other thoughts? | 22:54 | ||
| what might cause the write barrier not to be updated | 22:55 | ||
| jnthn | Not really...only that the code object is certainly going to be in gen2 as it is deserialized | ||
| MVM_gc_gen2_allocate_zeroed is correctly seeing the MVM_CF_SECOND_GEN flag | 22:57 | ||
| So that looks right... | |||
| diakopter | jnthn: splice is missing write barriers | ||
| jnthn | That'd be an issue...though I dunno if it's this issue | 22:58 | |
| diakopter | also, how does the wb list know about moved memory like tht | ||
| couldn't splice cause some pointers to become located in invalid memory | 22:59 | ||
| jnthn | It stores objects that point to nursery things | ||
| Not interior pointers inside that object | |||
| diakopter | oh yeah | ||
| set_size_internal doesn't have wbs either | 23:00 | ||
| (for its memmove) | |||
| jnthn | Doesn't need them, same reason. | ||
| diakopter | ? | 23:01 | |
| jnthn | It's only when a gen2 comes to point to an additional nursery | ||
| memmove doesn't change the set of objects that the array references. | |||
| diakopter | hm | ||
|
23:02
lizmat joined
|
|||
| diakopter | well, copy_to doesn't have them, and I know it needs them :P | 23:02 | |
| jnthn | yes, it does :) | ||
| diakopter | .todo moarvm/moarvm add write barriers to MVMArray.c splice and copy_to | 23:03 | |
| jnthn | happy debugging...night o/ | 23:27 | |
| diakopter | o/ | 23:28 | |
|
23:41
ssutch left
|
|||