|
Parrot 1.3.0 "Andean Swift" released | parrot.org Set by moderator on 23 June 2009. |
|||
| Austin_Hastings | Anyone know whether or not it's possible to use function pointers/references/call-via-scalar-string in NQP? If so, how? | 00:36 | |
| pmichaud | Austin_Hastings: It's not directly possible at the moment, but it's something we could easily add. | 01:39 | |
| Austin_Hastings | Pmichaud: Thanks, but I'm just finishing the elsif chain... :( | ||
|
02:28
whoppix joined
02:35
janus joined
03:48
Austin_Hastings left
04:03
Theory joined
04:22
Andy joined
06:08
flh joined
06:23
iblechbot joined
06:28
cotto joined
|
|||
| dalek | TT #808 created by flh++: VIM syntax file: fix parsing of quoted ".end" | 06:56 | |
|
07:03
Zak joined
07:19
szabgab joined
|
|||
| mikehh | All tests PASS (pre/post config, smolder, fulltest) at r39872 - Ubuntu 9.04 amd64 | 08:02 | |
|
09:05
barney joined
10:08
janus joined
10:09
preflex joined
10:31
bacek joined
10:45
masak joined
|
|||
| dalek | rrot: r39873 | fperrad++ | trunk/include/parrot/thr_windows.h: [build] MinGW gcc 4.4.0 which defines struct timespec with a guard named HAVE_STRUCT_TIMESPEC. So, rename the guard in thr_windows.h |
11:00 | |
|
11:00
flh joined
|
|||
|
12:22
iblechbot joined
|
|||
| dalek | TT #771 closed by bacek++: [bug] Duplicate identifier in Test;More.is_deeply | 12:23 | |
| rrot: r39874 | bacek++ | trunk/runtime/parrot/library/Test/More.pir: [cage] Rename duplicated C<left> and C<right> variables in Test/More.pir |
|||
|
12:28
kid51 joined
12:38
MoC joined
13:01
Whiteknight joined
13:02
skids joined
|
|||
| flh | ping kid51? | 13:07 | |
| purl | I can't find kid51? in the DNS. | ||
| flh | kid51, did you run "make vim-install" in editor/ after applying the patch? | 13:08 | |
| kid51 | No, I did not. | 13:09 | |
| flh | vim uses the ~/.vim/syntax/pir.vim file, which is only updated by "make vim-install" | 13:10 | |
| kid51 | Okay, I was unaware of that. | ||
| dalek | rrot: r39875 | jkeenan++ | trunk/editor/pir_vim.in: Enable Vim to correctly handle quoted string ".end" in subroutines. Cf. trac.parrot.org/parrot/ticket/808; applying patch submitted by flh++. |
13:16 | |
| TT #808 closed by jkeenan++: VIM syntax file: fix parsing of quoted ".end" | 13:20 | ||
|
13:34
bacek joined
|
|||
| PacoLinux | NotFound: en el tercer parrafo de docs/book/draft/ch06_nqp.pod hay un error - NQP represets almost - <-- represents :: lo puedes cambiar ? | 13:35 | |
|
13:36
riffraff joined
|
|||
| PacoLinux | wrong channel :) | 13:36 | |
| MoC | question: does building parrot trunk rev. 39873 or greater work on linux? | 13:43 | |
|
13:44
Theory_ joined
|
|||
| kid51 | MoC: works for me | 13:44 | |
| MoC | hrm... because I thought that Linux explicitly uses _STRUCT_TIMESPEC to avoid redefinition... | 13:45 | |
| and rev. 39873 changed it to HAVE_, but if it still works, nevermind | |||
| dalek | rrot: r39876 | jkeenan++ | trunk/docs/book/draft/ch06_nqp.pod: Correct spelling error noted by PacoLinux. |
13:47 | |
| kid51 | MoC: While it has not affected my subsequent builds on Linux, you should feel free to post a question about that on list to fperrad (who is rarely on #parrot). | 13:49 | |
| MoC: Since the commit message mentions MinGW, I suspect this change was for Win32 users' benefit. | 13:50 | ||
| But I don't know what other side effects it might have. | |||
| MoC | yep, I already planned to do that, in case of possible future errors | ||
|
13:50
ruoso joined
|
|||
| kid51 | PacoLinux: Lo cambiļæ½. | 13:50 | |
| PacoLinux | kid51: gracias :) | 13:51 | |
| MoC | "MoC: Since the commit message mentions MinGW, I suspect this change was for Win32 users' benefit." <-- yep. Before that commit I had to edit pthread.h itself. | 13:52 | |
| kid51 | MoC: Am now running Smolder test. Will report any problems related to 39873. | 13:53 | |
| dalek | rrot: r39877 | fperrad++ | trunk/lib/Parrot/Pmc2c/PMCEmitter.pm: [pmc] but PARROT_DYNEXT_EXPORT |
||
|
13:58
Whiteknight joined
|
|||
| MoC | kid51: Nevermind about that change breaking something on a non-windows OS. I overlooked that he only changed thr_windows.h, which appears to be only included on windows hosts. I will however still write a mail to the list, since I think that the issue is with pthread.h, because other software also uses _STRUCT_TIMESPEC instead of HAVE_* | 13:59 | |
| kid51 | MoC: good analysis; please post | 14:05 | |
| ... post to list | |||
| ... or create TT, if appropriate | 14:06 | ||
| MoC | I suppose a post to the mailing list is sufficient | ||
| dalek | rrot: r39878 | fperrad++ | trunk/lib/Parrot/Pmc2c/PMCEmitter.pm: [pmc] improve layout |
14:07 | |
| kid51 | Confirmed by successful Smolder test smolder.plusthree.com/app/public_pr...ails/24479 | 14:10 | |
| MoC | Ok. Mail sent. | 14:26 | |
| Whiteknight thinks he might have solved the GC heisenbug | 15:00 | ||
| or, at least one part of it | |||
| davidfetter | but only if the isotope has decayed? | ||
|
15:01
Andy joined
|
|||
| kid51 | GC heisenbug => Unfreed memory disappears if you look at it, but then immediately reappears. | 15:03 | |
| Infinoid | Whiteknight++ | 15:05 | |
| Whiteknight | commit coming now, you're going to like this one Infinoid | ||
| a real bear to track down | 15:06 | ||
| Infinoid | I've put in some work adding valgrind annotations but it didn't really catch much. Glad to see someone else has been making more progress :) | ||
| I'd like to add some padding between PMC structures within the arenas, and stagger reallocation so that (for instance) if PMC is 48 bytes in a 64-byte structure, the first time it's allocated at offset 0, the next time at offset 8, the next time at offset 16, and throw up some red zones to catch old pointers | 15:07 | ||
| 48 bytes of structure in a 64-byte zone, I mean | 15:08 | ||
| Whiteknight | that's not a bad idea | ||
| Infinoid | But I have a question. | ||
| dalek | rrot: r39879 | whiteknight++ | trunk/src/oo.c: [gc] fix one gc heisenbug, although apparently this isn't the only one. When cloning an object, we get into situations where we mark the object before it's ATTRs struct is initialized. This causes whatever garbage was in that allocated memory to be passed to the GC for marking, and hilarity ensues. Zero out the struct here to ensure we have NULL values in the struct and then Parrot_Object_mark won't try to mark the NULL pointers |
||
| Whiteknight | a little wasteful, so we should be able to turn that feature off | ||
| what's your question? | |||
| Infinoid | Of all the fields of the PMC structure, are the first ones most likely to be accessed, or the last ones? | ||
| That will determine whether we should precess forward or backward | |||
| Whiteknight | let me look at it again | ||
| Infinoid | There's too much smoke and mirrors in the pobj/pmc structure definition, I'm still not really sure how they are built | 15:09 | |
| I was wanting to look again, it's just an idea that occurred to me in the shower | |||
| Whiteknight | flags, vtable, and pmc_ext are the most frequently used, I think | ||
| I don't think data is used at all | |||
| or, maybe it is and I never noticed | |||
|
15:10
hudnix_ joined
|
|||
| jonathan | Whiteknight++ # nice work! | 15:10 | |
| Infinoid | Whiteknight++ indeed | ||
| So I haven't made a lot of progress with valgrind, though its memcheck.h API does give us some interesting possibilities | 15:11 | ||
| I can explicitly tell it that all the fields in the PMC structure are "undefined" when it's pulled from the free list, for example | |||
| and I can make them unreachable when it's put back on the free list | 15:12 | ||
| The problem is, when it's reallocated, that doesn't help much, hence the offset allocation idea | |||
| hmm. I can also put an implicit read barrier into the PMC_* macros to check whether the PMC was reallocated with a different offset | 15:15 | ||
| ... or, on x86-64 at least, we can build a serial number or some kind of cookie into the highest bits of the pointer value itself | |||
| assuming nothing accesses them without going through those macros... | 15:16 | ||
| Whiteknight | nopaste? | 15:21 | |
| purl | nopaste is, like, at nopaste.snit.ch/ (ask TonyC for new channels) or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/ | ||
| clunker3 | pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ | ||
| nopaste | "Whiteknight" at 69.248.162.161 pasted "new segfault, happens in P6Invocation" (45 lines) at nopaste.snit.ch/17110 | 15:22 | |
| Whiteknight | jonathan: take a look at that backtrace please | ||
| I'll dig into it now, but you probably know the code better then I do | |||
| jonathan | Whiteknight: Ah, that's new-ish code, that hasn't had a bug found in it yet. It's probably about time. ;-) | 15:25 | |
| oh, it crashes inside the multi dispatcher. | |||
| Interesting. | |||
| Whiteknight | the pos_args parameter has ->vtable == 0xdeadbeef | ||
| so it's been prematurely collected at some point | 15:26 | ||
| jonathan | Ah | ||
| This works with -G? | |||
| Whiteknight | it's that same incantation that bacek sent me | ||
| jonathan | I can tell you for sure that pos_args only ever exists on the stack. | ||
| Whiteknight | I don't know if -G fixes it | ||
| here's the command I used: gdb --args ../../parrot -R gcdebug --gc-debug ./perl6.pbc t/spec/S04-statements/do.rakudo | 15:27 | ||
| so it might disappear with -G, or even if we omit --gc-debug | |||
| jonathan | Aye, but it still shouldn't be getting collected. | ||
| Whiteknight | true | ||
| jonathan | PMC *pos_args, *named_args; | 15:28 | |
| get_args(interp, &pos_args, &named_args); | |||
| get_args should be setting those. | |||
| pmichaud | re: r39879 (Whiteknight++) --- shouldn't mem_allocate_typed zero out the pointers and fields by default? | ||
| jonathan | I did extensively refactor that code recently, let me sanity check. | ||
| Whiteknight | pmichaud: I don't know what it *should* do, but I can tell you what it isn't doing | 15:29 | |
| jonathan | pmichaud: That's mem_allocate_zeroed_typed IIRC. | ||
| Or similar. | |||
| purl | rumour has it similar is happening in Rakudo | ||
| pmichaud | then perhaps we should be calling mem_allocate_zeroed_typed | ||
| Whiteknight | does that function even exist? | ||
| pmichaud | I'm wondering when it would be appropriate to call mem_allocate_typed | ||
| Infinoid | yes, it exists | ||
| Whiteknight | I don't see it in src/gc/alloc_memory.c | 15:30 | |
| Infinoid | memory.h:#define mem_allocate_zeroed_typed(type) (type *)mem_sys_allocate_zeroed(sizeof (type)) | ||
| jonathan | Whiteknight: In get_args it does | ||
| PMC * const arg_list = pmc_new(interp, enum_class_ResizablePMCArray); | |||
| PMC * const arg_hash = pmc_new(interp, enum_class_Hash); | |||
| And later | |||
| *pos_args = arg_list; | |||
| *named_args = arg_hash; | |||
| Where pos_args and named_args are pointes to PMC pointers. | |||
| (e.g. to set them in the caller) | |||
| So I'm pretty sure they're always on the stack. | 15:31 | ||
| pmichaud | ...what keeps them from being gc'ed? | ||
| jonathan | Anyway, the relevant code is all inside perl6multisub.pmc | ||
| Not p6invocation.pmc | |||
| pmichaud: The GC walks the stack. In theory. | |||
| Whiteknight | ah nevermind, it's defined in a #define | ||
| pmichaud | it walks the C stack? | ||
| jonathan | Right. | ||
| Whiteknight | pmichaud: yes | ||
| pmichaud | interesting. | 15:32 | |
| Whiteknight | you can see the (horrible) code for it in src/gc/system.c | ||
| I would like nothing more then to kill it in a fire, but it's there | |||
| jonathan | Well, we kinda need to walk it, or we miss things. | ||
| pmichaud | right, makes sense. | ||
| jonathan | But somehow we're missing pos_args here, it seems. :-/ | 15:33 | |
| That or some other bug. | |||
| pmichaud | it's not on the c stack. | ||
| Whiteknight | jonathan: where is that code you mentioned? | ||
| perl6multisub.pmc? | |||
| jonathan | src/pmc/perl6multisub.pmc | ||
| pmichaud | well, I guess it must be, but it's not an argument. | ||
| jonathan | pmichaud: Huh? | ||
| pmichaud: OK, but it's a local. | |||
| pmichaud | right. | 15:34 | |
| jonathan | Those must be pushed on the stack at some point, right? | ||
| pmichaud | yes, I think so. | ||
| jonathan | Also | ||
| Whiteknight | jonathan: pos_args here is a PMC**, the GC can't track those | ||
| jonathan | At the point we crash, it has been passed as an argument to do_dispatch. | ||
| Whiteknight: OK, but notice that | |||
| a) Inside get_args it's on the stack as a direct PMC * | 15:35 | ||
| Whiteknight | jonathan: yes, but the PMC is getting collected before the call to do_dispatch | ||
| jonathan | Ah. | ||
| Looking at what else gets allocated | 15:36 | ||
| I see | |||
| PMC * const arg_hash = pmc_new(interp, enum_class_Hash); | |||
| The PMC right after it. | |||
| oh, if we're boxing, potentially various others too in fact. | |||
| Whiteknight: Maybe set a breakpoint at the end of get_args and see if we're collected at that point? | 15:37 | ||
| Whiteknight | doing that right now... | ||
| pmichaud | here's a thought: | 15:40 | |
| nm | |||
| Whiteknight | okay, I put in a bunch of asserts, building now | 15:44 | |
| pmichaud | where is "get_all_candidates_with_cur_args" called? | ||
| jonathan | from p6invocation iirc | ||
| yes | 15:45 | ||
| line 76 | |||
| All part of the fun interplay betwene the dispatchers. :-) | |||
| pmichaud | ah, I see. | ||
| The *.pmc code doesn't appear to be following the parrot coding style -- that was throwing me a bit | |||
| jonathan | In what way? | 15:46 | |
| Though it's out of the Parrot repo, so it doesn't have to. | |||
| It's not deliberately different though. | |||
| pmichaud | in Parrot I'm used to seeing | 15:47 | |
| PMC * | |||
| get_all_candidates_with_cur_args(...) | |||
| instead of | |||
| Whiteknight | what do the two different dispatchers do? | ||
| pmichaud | PMC *get_all_candidates_with_cur_args | ||
| jonathan | One does method dispatch, the other does multi dispatch. | ||
| pmichaud: Ah, OK. | 15:48 | ||
| Whiteknight | ./perl6multisub.pmc:825: failed assertion 'pos_args->vtable != 0xdeadbeef' | ||
| pmichaud | also, the p6invocation.pmc makes an extern reference to get_all_candidates.... but doesn't explicitly label it "extern" (and I missed the semi at the end) | ||
| so it looked to me like it was re-defining the function somehow. | |||
| jonathan | Ah, it wants extern? | ||
| pmichaud | (when I read it from a grep) | ||
| Whiteknight | I added the same assertion at the start of find_many_candidates_with_arg_list, and that one passed | 15:49 | |
| and the assertion directly before do_dispatch fails | |||
| so somewhere inside find_many_candidates_with_arg_list, pos_args is getting collected | |||
| jonathan | Which is very odd given | 15:50 | |
| PMC *pos_args | |||
| is int he parameter list | |||
| And therefore surely on the stack? | |||
| pmichaud | I was wondering if "return find_many_candidates_with_arg_list(...)" was being optimized somehow such that *pos_args isn't on the stack. | ||
| i.e., if gcc thinks it's a tailcall | |||
| Whiteknight | I would hope so, unless the compiler did some creepy optimization magic | 15:51 | |
| jonathan | That'd be some really creepy magic. | ||
| Whiteknight | that's why I dislike stackwalking GC stuff, because stackwalking + optimizing c compiler = horrible | ||
| pmichaud | Whiteknight: what happens if you split the return statement into two statements? | 15:52 | |
| (ooc) | |||
| Whiteknight | no idea, I'm running another test right now | 15:53 | |
| jonathan | Whiteknight: I know that | ||
| if (cache) | |||
| results = Parrot_mmd_cache_lookup_by_values(interp, cache, "", pos_args); | |||
| Certainly allocates a STRING. | |||
| Whiteknight | (and these tests are painfully slow with the --gc-debug flag) | ||
| jonathan | Also, if we run it, sort_candidates will allocate an absolute LOAD of stuff. | ||
| Whiteknight | okay, pos_args is collected during this call: | ||
| candidates = sort_candidates(interp, unsorted, &proto); | |||
| jonathan | So there's easily scope for allocation. | ||
| Ah | |||
| Whiteknight | directly before, it's alive, directly after it's been collected | 15:54 | |
| jonathan | I'm just curious why it's not on the stack and anchored. :-/ | ||
| But yes, sort_candidates will allocate PMCs for certain. | |||
| Whiteknight | who knows? stack gremlins? | ||
| pmichaud | I'd like to eliminate the (potential) tailcall and see what happens. | ||
| jonathan | Worth a try for sure. | ||
| pmichaud | (I agree it's a very long shot.) | 15:55 | |
| jonathan | Whiteknight: One tidbit though this still is no more clue to me: we do run PIR code during the course of sort_candidates. | 15:56 | |
| Whiteknight | that is interesting | 15:57 | |
| Ahah! I think that might be the aswer | |||
| answer | |||
| jonathan | We don't by any chance modify the stack top pointer? | ||
| Whiteknight | when we recurse into a new runloop, I think we set a new lo_val_ptr on the stack, and don't mark anything on the stack above that | 15:58 | |
| pmichaud | I bet we do. | ||
| Whiteknight | so anything that's not anchored when we recurse runloops falls off the face of the earth | ||
| jonathan | oh arse | ||
| pmichaud | that sounds like a serious problem. | ||
| jonathan | That'd do it | ||
| That'd completely do it. | |||
| pmichaud | given Parrot's design, I'm not sure that we can ever be certain that everything is anchored prior to recursing into a new runloop | 15:59 | |
| jonathan | No, me either. | 16:00 | |
| Whiteknight | we can tell parrot not to change the stacktop pointer when it recurses though | ||
| jonathan | Aye. | ||
| I'm curious why we're setting it at that point. | |||
| Whiteknight | because that sounds like stupid behavior, in hindsight | ||
| pmichaud | doesn't that just translate to "don't change the stacktop pointer"? | ||
| jonathan | I suspect it was a case of | ||
| Whiteknight | I have to double-check that we are re-setting it, but I think we are | ||
| jonathan | "we need to do it at some point" | ||
| And at one time, it was an OK place to do it | 16:01 | ||
| Like, when we didn't call back into PIR. | |||
| pmichaud | well, it was likely OK.... right | ||
| jonathan | From C. | ||
| This could easily explain various segfaults. | |||
| Whiteknight | HA! I shut off the GC sweep at that point, pos_args is no longer getting prematurely swept, and now it segfaults later in the test | 16:02 | |
| jonathan | bwah | ||
| nopaste | "Whiteknight" at 69.248.162.161 pasted "new segfault, backtrace for jonathan++ and pmichaud++" (48 lines) at nopaste.snit.ch/17111 | 16:03 | |
|
16:03
flh joined
|
|||
| Whiteknight is reminded of GSOC: fix one segfault and a new one just appears later | 16:03 | ||
| pmichaud | well, "shut off GC sweep" sounds like "workaround" and not "fix" to me | 16:04 | |
| jonathan | Oh, it's surely the same issue. | ||
| mmd_cache_key_from_values | |||
| That values pointer is also pos_args | |||
| pmichaud | we can't keep shutting off the GC every time we might recurse | ||
| jonathan | do_dispatch may also call into PIR | ||
| So almost certainly it's the same issue with recursion into PIR, and fixing that will clear this up. | 16:05 | ||
| pmichaud | in particular, I don't think we can expect .pmc writers to know every possible situation in which they might recurse | ||
| jonathan | aye | ||
| Well, Whiteknight++ maybe was just trying it to ensure it was that issue rather than proposing it as a fix. | |||
| pmichaud | yes. | 16:06 | |
| Whiteknight | yeah, I was just proving that was the source of the issues. Looking for a more permanent solution now | ||
| pmichaud | what's the purpose of lo_val_ptr ? | ||
| jonathan | To make sure we don't walk too far down the stack | 16:07 | |
| pmichaud | I can't even find "lo_val_ptr" (with ack) | 16:08 | |
| Andy | Hey, you know what I'd like to get rid of? | ||
| functions that take NULL PMCs that I assume are doing it only as a safety check | 16:09 | ||
| pmichaud | ah, it's "lo_var_ptr" | 16:12 | |
| Whiteknight | lo_var_ptr | ||
| yes, sorry | |||
| okay, so I think I was mistaken. I don't think the stacktop is being changed on runloop recursions | 16:16 | ||
| pmichaud | I agree. | ||
| if it is, I can't find it. | 16:17 | ||
| Whiteknight | ditto | ||
| but that doesn't change the fact that a PMC that is only anchored on the stack is disappearing after a recursion into a new runloop | 16:19 | ||
| whether it's the recursion that causes the problem or not is yet to be determined | |||
| pmichaud | exactly. | ||
| So I suspect something is wrong with the algorithm for finding PMCs on the stack | 16:21 | ||
| either the algorithm itself, or where it's being told to search | 16:22 | ||
| jonathan | It couldn't be at all anything to do with longjmp-ish stuff? | ||
| pmichaud | I'd think that's another possibility. | ||
| that what we think is a "stack" isn't really complete because of longjmp | 16:23 | ||
| Whiteknight | that might be possible I suppose | 16:24 | |
| pmichaud | I'm not familiar enough with longjmp to say, though. | ||
| Whiteknight | but I have a problem thinking that we're longjmping to a point on the stack above where pos_args is being used | ||
| pmichaud | we might not be (more) | ||
| Whiteknight | based on what little I know about how exception handling works | ||
| pmichaud | we could be longjumping to a point on the stack below wehre pos_args is being used | 16:25 | |
| and for that reason the stack trace isn't getting to pos_args | |||
| jonathan | I don't know enough about lngjmp stuff either. | ||
| pmichaud | (I might have my above/below backwards, sorry if that's the case) | ||
|
16:29
amuck joined
|
|||
| Whiteknight | pmichaud: I think you might have been on to something with the longjmp stuff. testing now | 16:32 | |
| nope, false alarm | 16:40 | ||
| this is a tricky nut to crack | 16:41 | ||
| dalek | rrot: r39880 | fperrad++ | trunk (2 files): [codingstd] put config_h.in under control |
16:44 | |
| Andy | seen mauke | ||
| purl | mauke was last seen on #perl 15 hours, 45 minutes and 3 seconds ago, saying: source: www.datapacrat.com/Art/Fiction/STORIES/SMALL.TXT | ||
| skids | Huh. I never thought about the implications of "stackless" stuff WRT debuggers. | 16:50 | |
| Whiteknight | stupid gdb question: how do I set a breakpoint on a function only if the parameter is a particular value? | 16:53 | |
| Whiteknight has to go dig out his gdb reference book | |||
| pos_args is definitely being collected inside Parrot_run_meth_fromc_args | 17:02 | ||
| the gc_debug runcore is collecting it | |||
| and the lo_var_ptr is the same in both places | 17:04 | ||
|
17:19
AndyA joined
|
|||
| Whiteknight | AHA! I think I've got it! | 17:25 | |
| runops_gc_debug core calls Parrot_gc_mark_and_sweep(interp, 0); | 17:26 | ||
| jonathan | What's the 0? | ||
| The problem? | |||
| purl | In 1972 a crack commando unit was sent to prison for a crime thry didn't commit. These men promptly escaped from a maximum security stockade to the Los Angeles underground. Today, they survive as soldiers of fortune. If you have a problem, if no one else can help, and if you can find them, maybe you can hire... the A Team. | ||
| jonathan | Yeah let's get the A Team to debug our GC! | 17:27 | |
| Whiteknight | notice that it doesnt call it with GC_TRACE_FULL, which would trace the stack | ||
| so the gc_debug runcore is not tracing the stack, so anything that's stack-only will get killed when we recurse into this runcore | 17:28 | ||
| so the gc_debug core creates new bugs that we wouldn't see otherwise | |||
|
17:29
dukeleto joined
|
|||
| Whiteknight | changing to the normal slow core, and the test completes without problem | 17:29 | |
| even passes | |||
| Tene | oh man, that's hilarious. :D | 17:31 | |
| jonathan | Damm! | 17:34 | |
| pmichaud | so..... | 17:37 | |
| you're saying that the other fix you did seems to have resolved the problem? | |||
| (or at least moved it somewhere else?) | 17:38 | ||
|
17:39
skids joined
17:45
bobke joined
|
|||
| Whiteknight | spectest fails a lot fewer tests now | 18:14 | |
| not zero though | |||
|
18:19
davef joined
18:21
davef left
|
|||
| pmichaud | well, there are some failing tests that aren't -G related | 18:29 | |
| afk, errands | |||
| Whiteknight | that's a good sign, right? that the tests aren't -G related? | 18:31 | |
| jonathan | Yes. | 18:33 | |
|
18:33
david joined
18:34
david left
|
|||
| dalek | rrot: r39881 | whiteknight++ | trunk/src (2 files): [gc] use mem_allocate_zeroed_typed instead of mem_allocate_typed + memset. Suggested to me by ... everybody who saw my r39879. fperrad++, pmichaud++, Infinoid++ |
18:37 | |
| Whiteknight | Well, I'm going to do my best W. and declare "mission accomplished" | ||
| nopaste | "mikehh" at 90.209.206.211 pasted "codetest failure from make fulltest at r39880 (PATCH follows)" (32 lines) at nopaste.snit.ch/17113 | 18:40 | |
| mikehh | codetest fails at r39880 - all others PASS - Ubuntu 9.04 amd64 - PATCH done - PASSes | ||
| dalek | rrot: r39882 | whiteknight++ | trunk/src/runcore/cores.c: [gc] The gc_debug core doesn't trace the system stack between dispatches. This causes a problem when we recurse into a new runcore while there are PObjs in the previous runcore that are only located on the stack and not anchored anywhere else in the memory graph. Change this to run a GC_TRACE_FULL trace, to make sure we cover the stack. Sure it's slower, but we don't use gc_debug because of the blinding speed |
||
| nopaste | "mikehh" at 90.209.206.211 pasted "PATCH for codetest failure at r39880" (13 lines) at nopaste.snit.ch/17114 | ||
| ttbot | whiteknight: Parrot trunk/ r39881 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/45723.txt | 18:41 | |
| Whiteknight | wtf? what is ttbot? | ||
| mikehh: I think I already fixed that in r39881 | 18:42 | ||
| mikehh++ though | |||
|
18:43
jan joined
|
|||
| ttbot | whiteknight: Parrot trunk/ r39882 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/45738.txt | 18:44 | |
| mikehh | Whiteknight: yes you removed the problem "sizeof" | 18:45 | |
| Whiteknight | ok | 18:46 | |
| dalek | rrot: r39883 | whiteknight++ | trunk/include/parrot/pmc.h: [gc] make headerizer to fix problems with gc_unregister_pmc which were introduced for some systems in r39881 |
||
| Whiteknight | EAT THAT TTBOT! | 18:47 | |
| skids | heheh. ttbot: "the compiler that stalks your ass" | 18:54 | |
| Whiteknight | who runs ttbot? | 18:56 | |
| ttbot? | |||
| purl: you're worthless | |||
| purl | Whiteknight: huh? | ||
| Whiteknight | just the response I would expect from a worthless bot | ||
| mikehh | All tests PASS (pre/post config, smolder, fulltest) at r39883 - Ubuntu 9.04 amd64 | 19:11 | |
| Infinoid | what's a ttbot? | 19:27 | |
| mberends | my xchat says it's TapTinder bot, at the Brno University of Technology | 19:33 | |
| mikehh | more rakudo tests passing (4/5 real fails) t/spec/S04-declarations/constant.rakudo exits after 7 out of 20 with Null PMC access in type() | 19:37 | |
|
19:44
PacoLinux joined
19:45
Theory joined
20:29
Austin joined
20:32
david joined
21:03
bacek joined
21:10
klapperl left
|
|||
| bacek | goo morning #parrot | 21:10 | |
| good of course | |||
| Austin | oodgay orningmay, acekbay | ||
| bacek | Austin: :) | 21:11 | |
| mikehh | not yet 1 hour + to go, but hi anyway | ||
| bacek | Hooray! Whiteknight++ | 21:14 | |
| Austin | ?? | 21:17 | |
| bacek | Austin: GC fix. | 21:18 | |
| Austin | ?? | 21:20 | |
| Ignore that last ?? | 21:21 | ||
| I hit uparrow by mistake. | |||
| Tene | Hi Austin. :) | 21:38 | |
| Austin | Hello, Tene. | 21:39 | |
| dalek | rrot: r39884 | bacek++ | failed to fetch changeset: Bring brach up-to-date with trunk. |
21:41 | |
| bacek | purl: TapTinder? | 21:46 | |
| purl | TapTinder is back, tt.perl6.cz/ .. need port watchdog to linux ... some test hang in r26917 | ||
| bacek | purl: ttbot is TapTinder bot. Owned by rj41 | ||
| purl | OK, bacek. | ||
| Austin is grinding testcases for PCT | 21:55 | ||
| Bleargh | 21:56 | ||
|
22:09
dduncan joined
22:10
dduncan left
22:34
rg joined
|
|||
| Austin | Double-bleargh. Undef != null. | 22:58 | |
| msg pmichaud Patrick, when a class (e.g., PCT::Node) uses P6object to extend Capture, printing an object of the class reports "Capture[0xb74b34a8]" instead of the name of the newly derived class. Is this a bug? | 23:03 | ||
| purl | Message for pmichaud stored. | ||
| Austin | msg pmichaud Patrick, when a class (e.g., PCT::Node) uses P6object to extend Capture, printing an object of the class reports "Capture[0xb74b34a8]" instead of the name of the newly derived class. Is this a bug? | 23:04 | |
| purl | Message for pmichaud stored. | ||
| Austin | Man, I have to watch that alt-tab+up+enter. sigh | ||
| Sorry, patrick. | |||
|
23:15
Limbic_Region joined
|
|||
| pmichaud | Austin: if it's a bug, it's not completely a bug in PCT | 23:16 | |
| it's true also for any class (P6object or not) that extends built-in PMC types | 23:17 | ||
| for example, try it with Hash | |||
| nopaste | "pmichaud" at 72.181.176.220 pasted "subclasses of PIR classes don't always stringify to subclass name (for Austin)" (11 lines) at nopaste.snit.ch/17116 | 23:18 | |
| dalek | rrot: r39885 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc: [pmc] Don't use MULTIs in Hash... It was way too optimistic. |
23:30 | |