Camelia, the Perl 6 bug

IRC log for #parrot, 2009-05-09

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:04 dalek decnum-dynpmcs: r27 | darbelo++ | trunk/src/pmc/decnum.pmc:
00:04 dalek decnum-dynpmcs: Raise exceptions only on actual errors.
00:04 dalek decnum-dynpmcs: review: http://code.google.com/p/decn​um-dynpmcs/source/detail?r=27
00:11 dalek parrot: r38620 | whiteknight++ | branches/gc_api (8 files):
00:11 dalek parrot: move pobject_lives into the api. Add a new Parrot_gc_ptr_is_pmc api function to hide some internals functions move some other stuff around
00:11 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38620/
00:18 dalek parrot: r38621 | whiteknight++ | branches/gc_api (57 files):
00:18 dalek parrot: [gc_api] rename pobject_lives Parrot_gc_mark_PObj_alive
00:18 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38621/
00:21 Whiteknight thank god for sed
00:21 Whiteknight (never thought I would say that)
00:21 darbelo I'm not sure I would admit using sed instead of perl arround here :)
00:22 Whiteknight i never was any good at perl command-line one-liners
00:23 darbelo toss your script at s2p then ;)
00:23 darbelo then you'd be using perl.
00:25 dalek parrot: r38622 | whiteknight++ | branches/gc_api/include/parrot (2 files):
00:25 dalek parrot: [gc_api] move all the guts of gc_mark_sweep.h into gc_api.h, preparing to delete the former
00:25 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38622/
00:27 Whiteknight never even heard of s2p
00:28 darbelo it translates sed to perl.
00:29 dalek decnum-dynpmcs: r28 | darbelo++ | trunk/examples/decnum.pir:
00:29 dalek decnum-dynpmcs: Make the decnum example actually show us something useful.
00:29 dalek decnum-dynpmcs: review: http://code.google.com/p/decn​um-dynpmcs/source/detail?r=28
00:30 darbelo http://www.perl.com/doc/manual/html/x2p/s2p.html
00:33 Whiteknight good work tonight darbelo
00:33 Whiteknight well, it's night for me
00:34 darbelo Thanks. I'll blog about a few discoveries later. Night.
00:35 Whiteknight excellent, looking forward to it!
00:35 Whiteknight goodnight
00:35 dalek parrot: r38623 | whiteknight++ | branches/gc_api (7 files):
00:35 dalek parrot: [gc_api] kill gc_mark_sweep.h file. the public functions are moved into the api, and the private functions into gc_private.h
00:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38623/
00:35 dalek parrot: r38624 | whiteknight++ | branches/gc_api/src/gc/gc_private.h:
00:35 dalek parrot: [gc_api] run make headerizer, cleans some things up slightly. Done work for the night
00:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38624/
00:56 cotto d'oh.  I was going to say something nice, but he just left.
01:06 Infinoid There's always next time :)
01:27 Infinoid I usually run "make test" and "make codetest" in parallel
01:27 Infinoid When I forget the "code" part on one of those, the results are sometimes spectacular
01:32 confound joined #parrot
01:34 dalek parrot: r38625 | Infinoid++ | trunk/config/auto/arch.pm:
01:34 dalek parrot: [config] Apply change from rrauenza++ in TT #653.  Apparently r38512 had added the fixup after the string had already been parsed.
01:34 dalek parrot: This should let us parse arch names like "IA64.ARCHREV_0".
01:34 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38625/
01:34 Infinoid Oh no, lost karma!
01:35 * Infinoid shakes fist at the ghost of purl
01:36 cotto Infinoid++
01:36 cotto heh
01:36 kid51 joined #parrot
01:37 Infinoid heh, cotto++
01:37 cotto now's the time for any would-be purl impersonators
01:39 Infinoid I already had it that way, cotto.
01:42 dukeleto joined #parrot
01:53 Infinoid I am now officially unemployed
01:53 Infinoid Oh well, might as well help break the GC.
01:55 cotto Sorry to hear that.
01:56 Infinoid Eh, 'tis the season
01:58 s1n Infinoid: laid off? that's a bummer, sorry to hear
02:00 Infinoid thanks, I'll figure something out
02:00 kid51 t/codingstd/perlcritic.........262/307 Argument "5.010_000" isn't numeric in subroutine entry at /usr/local/lib/perl5/site_perl/​5.10.0/Perl/Critic/Document.pm line 139.
02:00 kid51 don't believe I've seen that warning before.
02:01 Infinoid msg whiteknight Hey, breaking the GC looks like fun.  Do you have a plan or task list or something?  Can I help?
02:01 Infinoid Oh, ENOPURL
02:04 kid51 When I got to parrot.org and search for "YAPC" I don't get any links pertaining to the Parrot workshop preceding the conference -- only links to last year's events.
02:05 kid51 It doesn't show up on our little calendar of events thingie, either.
02:23 dukeleto joined #parrot
02:35 janus joined #parrot
02:54 qiang joined #parrot
02:56 cognominal joined #parrot
03:48 afk_coke now
03:48 afk_coke now?
03:49 Coke anyone msg masque yet?
03:51 cotto we need purl for that
03:52 tetragon joined #parrot
03:52 Coke not msg, /msg
03:52 Coke I just did.
04:08 Andy joined #parrot
04:31 dalek parrot: r38626 | petdance++ | trunk (2 files):
04:31 dalek parrot: properly shimmed some arguments
04:31 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38626/
04:37 bacek hi again
04:37 dalek parrot: r38627 | bacek++ | branches/tt631_part3:
04:37 dalek parrot: Removed tt631_part3 branch. It was merged to trunk
04:37 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38627/
04:37 bacek Hey, where is our lovely girl?
04:44 dalek tracwiki: v13 | bacek++ | BranchDescriptions
04:44 dalek tracwiki: Drop tt631_part3 branch.
04:44 dalek tracwiki: https://trac.parrot.org/parrot/wiki/Branc​hDescriptions?version=13&action=diff
04:52 cotto I guess all the karma killed her.
05:03 bacek bad karma...
05:05 bacek cotto: any plans for pmc_pct branch?
05:07 cotto I spent a bunch of time trying to get function pointer attrs working, but I'm putting that off for now.
05:07 cotto Next on the list is generating some meaningful ATTR accessor macros.
05:08 cotto Working from the C99 standard turned out to be overkill.
05:10 bacek Ok. I'll take generating vtable functions.
05:10 cotto sounds like a plan
05:12 bacek Sorta :)
05:15 cotto enough of one that we won't step on each other's feet
05:16 bacek Agreed
05:22 cotto can regexes be used in nqp?
05:24 bacek cotto: no idea... Probably yes. Grammar is regex anyway.
05:26 mikehh_ joined #parrot
05:36 dalek parrot: r38628 | petdance++ | trunk/src/hash.c:
05:36 dalek parrot: consting and fixing indentation
05:36 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38628/
05:51 preflex joined #parrot
06:10 gaurav joined #parrot
06:34 cognominal joined #parrot
07:03 signals joined #parrot
07:04 signals left #parrot
07:47 purl joined #parrot
07:49 bacek hi purl!
07:49 bacek purl: good girl
07:49 purl thanks bacek :)
07:49 bacek horray! She's back! :)
07:50 cotto woohoo
07:51 cotto < purl-- >
07:51 cotto for being broken
07:52 cotto incoming
07:53 dalek parrot: r38629 | cotto++ | branches/pmc_pct/compilers/pmcc/src (3 files):
07:53 dalek parrot: [pmcc] add ATTR accessor macro generation
07:53 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38629/
07:53 cotto still need to figure out function pointer ATTRs and inheritance, but that covers the basics
08:05 iblechbot joined #parrot
08:16 contingencyplan joined #parrot
08:17 bacek cotto++
08:18 bacek We are getting closer to step 4! :)
08:18 cotto technically yes, but which step 4?
08:19 bacek compilers/pmc/TODO :)
08:19 cotto bacek++
08:19 cotto profit++
08:19 cotto karma profit
08:19 purl profit has karma of 6
08:20 cotto karma prophet
08:20 purl prophet has karma of 1
08:20 bacek profit++ # Need more karma!
08:20 bacek afk # kids time
08:21 cotto kids are good
08:21 cotto don't forget to feed them.  I think they need that.
08:48 bacek back
08:48 bacek cotto: oh...
08:48 bacek afk # feed kids
09:27 cotto btw, how does kangaroo taste?
09:30 * cotto suddently wants chicken
09:48 bacek cotto: they are pretty tasty
10:09 bacek ok. Another EPIC FAIL.
10:09 qiang1 joined #parrot
10:09 cotto ?
10:09 bacek Trying to parse vtable body independently.
10:10 cotto how so?
10:10 bacek Overcomplicated.
10:10 bacek I'll try to parse in just in grammar.pg
10:11 cotto it looks like figuring out the name of the pmc file being compiled will be interesting too
10:11 cotto although the only reason I need that is so I know where to put the .dump files.
10:15 bacek $pmc.name
10:15 cotto no, I mean the actual path to the file, including the filename.
10:15 cotto as in src/pmc/file.pmc
10:16 cotto although I don't think there's anything wrong with dumping them somewhere else
10:17 bacek Apart from dealing with dynpmc - nothing
10:17 cotto I'll solve it for normal PMCs, then deal with dynpmcs
10:18 bacek hey. I created filename/set_filename in emitter.pm. Will they help if we'll use them consistently?
10:24 cotto sure
10:27 cotto we'll need that same info for dumping the .c and .h files anyway
10:27 bacek so, let's use them! :)
10:34 cotto obvious++
10:34 cotto ;)
10:42 cotto Alright.  It's hacky, but inheritance is working.
10:42 cotto and I'm failing a bunch of tests. :{
11:00 bacek I'm failing to produce few lines of working code today... Totally stuck...
11:05 Whiteknight joined #parrot
11:11 cotto those days happen
11:38 dalek parrot: r38630 | whiteknight++ | branches/gc_api (16 files):
11:38 dalek parrot: [gc_api] rename the rest of the functions in the API to be Parrot_gc_*, fix some documentation, etc
11:38 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38630/
11:40 cotto committed
11:40 cotto purl, committed
11:40 purl cotto: i'm not following you...
11:41 dalek parrot: r38631 | cotto++ | branches/pmc_pct/compilers/pmcc (8 files):
11:41 dalek parrot: [pmcc] initial version of ATTR inheritance
11:42 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38631/
11:45 dalek parrot: r38632 | whiteknight++ | branches/gc_api (2 files):
11:45 dalek parrot: [gc_api] Remove the last non-api functions from gc_api.c. With that, the GC *should be* properly encapsulated. Now we just need to refine the boundary.
11:45 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38632/
12:01 Whiteknight joined #parrot
12:03 cotto Whiteknight, ooc when's that branch going to merge?
12:04 Whiteknight soon, hopefully
12:04 Whiteknight why, you blocking on it?
12:04 cotto nope.  just curious
12:05 mikehh joined #parrot
12:05 dalek parrot: r38633 | whiteknight++ | branches/gc_api (7 files):
12:06 dalek parrot: [gc_api] move some logic from src/pmc_freeze.c to the gc api, because it was monkeying around in the arenas. I'm still not entirely happy about how pmc_freeze breaks GC encapsulation, need to work on that
12:06 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38633/
12:06 dalek parrot: r38634 | cotto++ | branches/pmc_pct/compilers/pmcc/src (4 files):
12:06 dalek parrot: [pmcc] add support for (simple) function pointer ATTRs
12:06 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38634/
12:08 Whiteknight cotto: I could probably merge within a few hours, it's stable now and I don't have a finite todo list
12:08 Whiteknight the longer I keep the branch open, the more I will do
12:09 dalek parrot: r38635 | cotto++ | branches/pmc_pct/compilers/pmcc/src/nodes.pir:
12:09 dalek parrot: [pmcc] fix test failure from previous commit
12:09 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38635/
12:10 cotto but the longer you keep it open, the less fun it'll be to merge
12:13 cotto time for a nap
12:22 kid51 joined #parrot
12:25 dalek parrot: r38636 | whiteknight++ | branches/gc_api (4 files):
12:25 dalek parrot: [gc_api] Add a function to the API to explicitly free a PMC header, to prevent pmc.c from having to deal with Small_Object_Pool structures directly.
12:25 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38636/
12:28 masak joined #parrot
12:29 masak oh hai, I'm having build fails with Parrot since chromatic's r38577 optimisation.
12:29 masak I'm on Darwin. getting "Bus Error" when trying to compile Perl6Grammar.pir
12:32 cotto smolder?
12:32 purl it has been said that smolder is http://sourceforge.net/projects/smolder or web-based smoke test aggregator used by developers and testers to upload (automated or manually) and view smoke/regression tests using the Test Anything Protocol (TAP). or http://smolder.plusthree.com/app​/public_projects/smoke_reports/8
12:35 dalek parrot: r38637 | whiteknight++ | branches/gc_api (4 files):
12:35 dalek parrot: [gc_api] add a new api function Parrot_gc_free_string_header, use that to get references of Small_Object_Pool out of src/string/api.c. Also, use API functions in retcontinuation PMC to preserve encapsulation
12:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38637/
12:39 rdice joined #parrot
12:40 rg1 joined #parrot
12:46 masak chromatic: http://gist.github.com/109252
12:48 dalek parrot: r38638 | whiteknight++ | branches/gc_api (3 files):
12:48 dalek parrot: [gc_api] add two new api functions to get the number of active sized buffers, and total sized buffers.
12:48 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38638/
12:58 dalek parrot: r38639 | whiteknight++ | branches/gc_api (4 files):
12:58 dalek parrot: [gc_api] Small_Object_Pool and Small_Object_Arena structures are now gc-private and are not used or visible outside the GC
12:58 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38639/
13:11 dalek parrot: r38640 | whiteknight++ | branches/gc_api (3 files):
13:11 dalek parrot: [gc_api] Add new API functions to get the number of GC mark and collect runs, use them to reduce access to the Arenas structure outside the GC
13:11 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38640/
13:18 dalek parrot: r38641 | whiteknight++ | branches/gc_api (3 files):
13:18 dalek parrot: [gc_api] add more api functions to control access to the Arenas structure
13:18 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38641/
13:48 dalek lua: 28ba481 | fperrad++ | src/pmc/luastring.pmc:
13:48 dalek lua: fix build with Parrot r38536 (tt631_part2 merge)
13:48 dalek lua: see https://trac.parrot.org/parrot/ticket/651
13:48 dalek lua: review: http://github.com/fperrad/lua/commit/28​ba481b689e6f29ddc60294509d53fd349a466d
13:48 dalek lua: c0a72c1 | fperrad++ | src/pmc/lua (4 files):
13:48 dalek lua: s/interp/INTERP/g
13:48 dalek lua: review: http://github.com/fperrad/lua/commit/c0​a72c1d422c52f7c49e7e391e2fbec8a7e02421
13:49 pfig joined #parrot
13:57 dalek rakudo: f2557a8 | pmichaud++ | Configure.pl:
13:57 dalek rakudo: Fix bug with Configure.pl's 'make clean' on Win32.  (azawawi++)
13:57 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​2557a89e5605486af9a88681ef1d686e897c5b5
13:58 cognominal joined #parrot
14:01 dalek parrot: r38642 | jkeenan++ | trunk/tools/dev/branch_status.pl:
14:01 dalek parrot: Change way version is specified to pass perlcritic.t.  (This is more likely to be a Perl::Critic bug than our bug.  Cf.:  https://rt.cpan.org/Ticket/Display.html?id=45892.).  Also, 'use feature' is not needed once we've specified 5.10 (per 'perldoc -f use').
14:01 purl dalek: that doesn't look right
14:01 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38642/
14:04 dalek parrot: r38643 | whiteknight++ | branches/gc_api (8 files):
14:04 dalek parrot: [gc_api] move Arenas struct into gc_private.h. It is no longer directly accessible from outside the GC system. Notice also that the block/unblock routines are no longer macros, they are now regular API functions.
14:04 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38643/
14:14 tetragon joined #parrot
14:27 s1n joined #parrot
14:53 dalek parrot: r38644 | fperrad++ | trunk/config/auto/gmp/gmp_c.in:
14:53 dalek parrot: [config] fix compilation on Windows
14:53 dalek parrot: test_3020.c: In function `main':
14:53 dalek parrot: test_3020.c:29: warning: implicit declaration of function `SetErrorMode'
14:53 dalek parrot: test_3020.c:29: warning: nested extern declaration of `SetErrorMode'
14:53 dalek parrot: test_3020.c:29: error: `SEM_NOGPFAULTERRORBOX' undeclared (first use in this function)
14:53 dalek parrot: test_3020.c:29: error: (Each undeclared identifier is reported only once
14:53 dalek parrot: test_3020.c:29: error: for each function it appears in.)
14:53 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38644/
14:55 masak joined #parrot
15:04 Infinoid masak: So your "item" pointer is NULL.  Any chance you can check what the "size" value was?
15:05 Infinoid Looking at r38577, I think it must be some kind of corruption, which means it might be tricky to debug, but we might as well look up the obvious stuff first
15:06 masak Infinoid: teach me how to check, and I'll check.
15:07 dalek parrot: r38645 | whiteknight++ | branches/gc_api (4 files):
15:07 dalek parrot: [gc_api] some basic cleanups. Rename some stuff to be better, documentation, fix some mis-matched data types
15:07 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38645/
15:07 Infinoid You used gdb to get that backtrace, right?
15:07 Infinoid At the same place you had typed "bt" or "backtrace", type "print size"
15:13 masak Infinoid: ok.
15:13 * masak does that
15:13 Infinoid Thanks.
15:13 Infinoid Which version of parrot are you using?
15:14 Infinoid Just to verify what's going on, does this patch (upcoming nopaste) get things building for you?
15:14 nopaste "infinoid" at 76.215.211.232 pasted "[PATCH] masak: debugging patch, does this crash?" (26 lines) at http://nopaste.snit.ch/16505
15:15 masak one thing at a time :)
15:15 Infinoid hehe
15:15 masak getting size for you first.
15:16 Infinoid The code changed by r38577 has a couple of code paths, one optimized and one normal.  One weird thing is, chromatic's commit message made it sound like it used the optimized case in all cases, but in reality, it enabled *both* code paths.  The above nopaste disables the non-optimized path, which I think may have been his intention
15:16 masak as to version, I'm running r38577.
15:16 masak the first one that fails for me.
15:17 Infinoid ok, thanks
15:19 masak 'print size' gives '$1 = 12945440'
15:20 jonathan .oO( that's a big size )
15:20 masak that's what it says.
15:20 Theory joined #parrot
15:20 Infinoid Wow, sounds like the PMC is definitely corrupt (or not an RPA to begin with)
15:21 masak trying patch now.
15:22 Infinoid Thanks.  If it works, I won't be able to explain why, but it fixes the only thing about r38577 which looks suspicious to me
15:22 dalek rakudo: 95aab9d | jnthn++ | src/builtins/assign.pir:
15:22 dalek rakudo: Implement hash versions of hyper operators.
15:22 jonathan If there's PMC corruption, a -G can be worthwhile too.
15:22 masak no need for exact explanations. I just want it to work so I can compile Rakudo. :)
15:22 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​5aab9d84137bfa17972a1dddbfb0a71574511d4
15:23 masak Infinoid: it worked.
15:23 purl Of course it worked
15:23 masak purl: shut up.
15:23 purl make me
15:23 * masak assaults purl
15:23 Infinoid purl, die in a fire
15:23 purl HALP
15:24 Infinoid masak++ # I'll check in a cleaner version of that
15:24 masak Infinoid++ # thanks for the help
15:24 jonathan purl++ # putting up a fun-to-watch fight
15:26 dalek parrot: r38646 | whiteknight++ | branches/gc_api/src/gc/api.c:
15:26 dalek parrot: [gc_api] rearrange some things so they're in a reasonable order
15:26 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38646/
15:28 Infinoid masak: r38648
15:30 dalek parrot: r38647 | Infinoid++ | trunk/config/auto/gmp/gmp_c.in:
15:30 masak Whiteknight: ping
15:30 dalek parrot: [cage] c_indent.t fix.
15:30 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38647/
15:30 dalek parrot: r38648 | Infinoid++ | trunk/src/pmc/retcontinuation.pmc:
15:30 dalek parrot: [PMC] According to masak++, r38577 causes a SIGBUS on darwin.
15:30 dalek parrot: The code in question has two code paths: one optimized path that recycles RetContinuations, and the normal path which doesn't.
15:30 dalek parrot: The r38577 commit log suggests that the optimized path was enabled in all cases.  But in reality, *both* paths were being executed.
15:30 dalek parrot: This patch disables the non-optimized path.  I can't tell you why this fixes it, but apparently it does.
15:30 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38648/
15:30 Infinoid msg chromatic Can you review r38648 when you get the chance?  I don't understand the code well enough to know whether it was the right fix.  Thanks!
15:30 purl Message for chromatic stored.
15:39 dalek parrot: r38649 | jhorwitz++ | trunk/docs/embed.pod:
15:39 dalek parrot: replace call to internal Parrot_Class_instantiate with VTABLE_instantiate
15:39 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38649/
16:13 pfig joined #parrot
16:27 Whiteknight damnit, I tried to merge my branch to trunk and I developed a test failure
16:28 Whiteknight before I go crazy, is anybody else seeing failures on t/pmc/packfiledirectory.t?
16:33 Infinoid It passes in trunk for me
16:34 Infinoid Which branch?
16:51 Whiteknight gc_api branch
16:51 Whiteknight it passes in the branch too, but when I merge with trunk I get the test failure
16:52 Whiteknight masak: pong
16:52 Infinoid I just tried rebasing gc_api on top of trunk, and got a double free error compiling PGE
16:53 Whiteknight oh, I must not have committed that fix yet
16:53 masak Whiteknight: the Perl 6 wikibooks thing. I'm given to understand that you've written much of it.
16:54 Whiteknight Infinoid: committing that one now
16:54 Whiteknight masak: Yes, I think I've written nearly all of it
16:54 Whiteknight but it's out of date now
16:54 Infinoid Whiteknight: I've got valgrind output that shows me that your branch changes perturb r38577 somehow; it's accessing an already-freed RetContinuation PMC.  Is your fix related to that?
16:54 masak Whiteknight: yes. that was part of my point.
16:54 dalek parrot: r38650 | whiteknight++ | branches/gc_api/src/pmc/retcontinuation.pmc:
16:54 dalek parrot: [gc_api] fix for retcontinuation pmc to avoid double-free
16:54 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38650/
16:55 masak I'm finding factual inaccuracies in it, or out-of-date things.
16:55 Infinoid heh, cool.  Whiteknight++
16:55 masak I'd contribute, but I'm slightly uncomfortable with the fact that commits might be left sitting around without being approved.
16:56 Theory joined #parrot
16:56 masak Whiteknight: this section, f'rex, is way off: http://en.wikibooks.org/wiki/Perl_6_Progr​amming/Control_Structures#Smart_Matching
17:00 Whiteknight masak: Yeah, probably is. I really need to get back to work on that book and get things improved
17:00 Whiteknight if you send me suggestions/patches I'll implement them for you
17:01 masak Whiteknight: as I said, I'd be happy to contribute directly, if I were only a bit more clear on what gets approved and when.
17:01 masak Whiteknight: I'm used to changes to wikis/svn/git appearing directly.
17:01 Whiteknight masak: Nothing gets "approved". All your changes go live immediately on the wiki
17:02 masak Whiteknight: it's been a while since I committed to it.
17:02 masak Whiteknight: last time I did, things had to be approved.
17:02 Whiteknight I dont ever remember that being the case, did you log in?
17:02 masak aye.
17:02 masak I wouldn't go so far as calling it "off-putting", but it does create a barrier.
17:02 Whiteknight yeah, if you're logged in all changes should appear immediately
17:03 masak Whiteknight: maybe you're an owner of the book and I'm not.
17:03 masak or some other difference like that.
17:03 Whiteknight nope, no such concept as "owner" or anything.
17:03 masak Whiteknight: trying now.
17:03 Whiteknight okay, awesome. let me know how it works
17:03 Whiteknight (i'll kick some butts if it gives you trouble)
17:06 masak Whiteknight: "Edits will be incorporated into the stable version once an authorised user reviews them. The draft is shown below. 1 change awaits review."
17:06 Whiteknight oh, that's an anti-vandalism thing. your edit is visible to all logged-in users
17:07 masak ok. I understand the need for protection against vandalism on a public wiki.
17:08 masak just wondering with what kind of regularity you tend to go actually approving edits.
17:08 Whiteknight pretty regular, we have teams of page-reviewers
17:08 masak sounds good.
17:09 masak I'll see if I can make some more sweeping reviews of the text soon.
17:09 Whiteknight Great! masak++ We need all the help on that book we can get
17:10 jhorwitz joined #parrot
17:11 dalek parrot: r38651 | coke++ | trunk/t/compilers/imcc/syn/regressions.t:
17:11 dalek parrot: Add a test for TT #654
17:11 dalek parrot: Courtesy pmichaud++
17:11 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38651/
17:11 Whiteknight okay, I have to disappear for now. later
17:37 pfig joined #parrot
17:47 rdice joined #parrot
18:48 pfig joined #parrot
18:51 Khisanth joined #parrot
18:53 pfigz joined #parrot
19:01 pfig joined #parrot
19:02 Whiteknight joined #parrot
19:03 pfigz_ joined #parrot
19:12 Eevee joined #parrot
19:22 dalek parrot: r38652 | whiteknight++ | branches/gc_api (82 files):
19:22 dalek parrot: [gc_api] merge to trunk from 38520:38575. The error hasn't appeared yet
19:22 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38652/
19:35 dalek parrot: r38653 | whiteknight++ | branches/gc_api (84 files):
19:35 dalek parrot: [gc_api] merge to trunk HEAD (38652). found the error
19:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38653/
20:02 Whiteknight prepare yourselves....
20:05 dalek parrot: r38654 | whiteknight++ | trunk (132 files):
20:05 dalek parrot: [gc_api] Behold! Parrot is entering an age of slightly less lousy GC! Merging the gc_api branch into trunk, all tests pass.
20:05 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38654/
20:24 jonathan *gulp*
20:24 jonathan :-)
20:24 dalek rakudo: 67581ac | jnthn++ | src/classes/Code.pir:
20:24 dalek rakudo: Remove duplicate .count method, spotted by jhorwitz++.
20:24 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​7581ac43d3ff12305550c85db3dde732a3ef214
20:24 * jonathan hopes this will make it easier to play with other GC schemes.
20:40 Eevee joined #parrot
21:00 register joined #parrot
21:04 Theory joined #parrot
21:07 register where is twek?
21:08 moritz did you mean tewk?
21:08 register yes sorry
21:08 register i meant tewk
21:26 Infinoid Whiteknight: I had to leave for a while, but I'm back.  After your double free fix, I have a merged git branch here which seems to test fine
21:26 dalek rakudo: 70c5195 | moritz++ |  (4 files):
21:26 dalek rakudo: track changed parrot function name
21:26 dalek rakudo: Also bump parrot revsion to 38654, ie after the gc api merge
21:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​0c51954dd3aabef73e91f708177227e1f3e6316
21:26 dalek rakudo: 7d581a5 | moritz++ | src/pmc/objectref_pmc.template:
21:26 dalek rakudo: forgot one old function name
21:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​d581a54721b3410e917c6b6c4a53c2b008a066b
21:26 Whiteknight yeah, I had to comment out a line of code in retcontinuation.pmc:invoke
21:27 Whiteknight I'm gdb'ing it right now to figure out why that line causes a failure in packfiledirectory.t
21:27 Infinoid what's the line?  (is it checked in?)
21:27 Infinoid things seem to be working fine for me (gentoo/amd64)
21:28 Infinoid oh, it's already merged.  nevermind
21:34 Whiteknight Infinoid: it's like 103
21:34 Whiteknight uncomment it, and t/pmc/packfiledirectory.t fails with a segfault
21:34 Whiteknight "it's line 103"
21:36 Whiteknight I think you've made an edit in that general area recently, removing the "#if NDEBUG" conditional
21:37 Infinoid yeah
21:37 Infinoid r38648 was my fixup of chromatic's removal of that stuff (r38577)
21:38 Whiteknight in the branch I moved most of the code from that section into the Parrot_gc_free_pmc_header, so it should be doing an identical operation
21:45 Infinoid I still don't get a failure in t/pmc/packfiledirectory.t in current trunk, even with that line uncommented
21:47 pfig joined #parrot
21:50 pfigz joined #parrot
21:59 dalek parrot: r38655 | Infinoid++ | trunk/src/runcore/cores.c:
21:59 dalek parrot: [core] Fix the following warnings:
21:59 dalek parrot: src/runcore/cores.c:412: warning: comparison between signed and unsigned
21:59 Whiteknight really? Then I wonder what thehell is wrong with my checkout
21:59 dalek parrot: src/runcore/cores.c:418: warning: comparison between signed and unsigned
21:59 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38655/
21:59 dalek parrot: r38656 | Infinoid++ | trunk (6 files):
21:59 dalek parrot: [cage] Some codetest fixes.
21:59 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38656/
21:59 Infinoid something different about our machines perhaps
22:00 Infinoid got a backtrace?
22:00 Whiteknight what machine are you on? I'm Ubuntu 9.04, x86-64
22:00 * Whiteknight is getting a backtrace right now
22:00 Infinoid gentoo x86-64
22:02 Whiteknight nopaste?
22:02 clunker3 http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/
22:02 purl nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others)
22:02 nopaste "Whiteknight" at 69.249.200.13 pasted "packfiledirectory.t failures for Infinoid++" (67 lines) at http://nopaste.snit.ch/16511
22:03 Whiteknight I printed out the contents of some of the parameters too, the "value" pmc has 0xdeadbeef for it's vtable
22:03 Whiteknight actually, I guess that makes sense since it should be an integer, right?
22:04 Infinoid no, integer pmcs still have vtables
22:04 Infinoid otherwise VTABLE_get_integer() wouldn't work :)
22:05 Infinoid if its vtable is 0xdeadbeef, it probably means it was recycled but something else still had a pointer to it
22:05 Infinoid though... what that has to do with explicit freeing of retcontinuations, I dunno
22:08 Whiteknight I just traced through, and the code before and after the branch in src/pmc/retcontinuation.pmc:invoke does exactly the same stuff
22:08 Whiteknight the same lines of code are executed in the same order
22:08 Whiteknight So I dont know why prior to the merge the test passes for me, and afterwards it fails
22:09 Infinoid some change in trunk, I guess
22:09 Whiteknight yeah
22:09 Infinoid at the time of the crash, does your pmc pointer value change every time you run it?
22:09 Whiteknight which pointer value?
22:09 Whiteknight p value?
22:10 Infinoid nah, pmc
22:10 Infinoid usually when I have to debug this kind of crash, I end up having to set a watchpoint... but the linux kernel seems to randomize stack or heap locations and I have to turn that off before I can reliably set a watchpoint
22:10 Whiteknight just ran it 5 times, diffrent each time
22:10 Whiteknight I'm no good with watchpoints
22:11 Infinoid it's a pain anyway.  would help to boil down the test case first
22:12 dalek parrot: r38657 | cotto++ | branches/pmc_pct/compilers​/pmcc/src/emitter/pmc.pm:
22:12 dalek parrot: [pmcc] only generate ATTR-related code when there are ATTRs
22:12 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38657/
22:14 Whiteknight chromatic is going to be unhappy that I borked up his optimization
22:15 Infinoid sounded like his optimization was borked on darwin anyway :)
22:15 cotto He said it was "slightly dangerous".
22:15 Infinoid I had asked him to review my fix, as I dunno the code very well
22:15 Whiteknight actually, I think I just had a suspicion about what may be causing it
22:16 Whiteknight we're manually freeing the RetContinuation PMC, but we're not NULLing out the pointer to it in the Context structure
22:16 Infinoid but when you do NULL out the pointer in the Context structure, you get SIGBUS on darwin :)
22:17 Whiteknight that's particularly strange to me. We shouldn't get SIGBUS on a structure field access, the compiler should properly align that
22:17 Infinoid The SIGBUS didn't happen until way later, and it was just untracable memory corruption.  masak++ narrowed it down by bisecting old revisions
22:18 Whiteknight I don't want to null out the pointer to the context, I want to null out the pointer in the context to the PMC
22:18 Infinoid some (apparently completely unrelated) PMC pointer was NULL when it shouldn't have been
22:18 * Whiteknight goes digging
22:18 Infinoid http://gist.github.com/109252 was his backtrace
22:19 Infinoid (but it doesn't clear things up much)
22:19 Whiteknight no
22:20 Infinoid he ended up with an RPA that had a NULL pointer to the item[] array, and a size (number of members) value of 12945440
22:30 Whiteknight that's quite strange indeed
22:30 Whiteknight so a null pointer deref in darwin raises SIGBUS instead of SIGSEG?
22:32 Infinoid apparently... the two are pretty similar
22:33 jonathan Whenever I've debugged problems along these lines, it's often tended to boil down to
22:33 Infinoid they both mean "there isn't any memory mapped to that address range, dork", for varying values of "mapped"
22:34 jonathan Something still references a PMC but isn't telling the GC about it.
22:34 jonathan So the memory gets re-used for something else
22:34 jonathan And you get corruption from the two things trying to do different things with the PMC.
22:35 Infinoid indeed
22:35 jonathan In this case, my suspicion is that the RetContinuation is still referenced in some way, or at some point during the re-cycle the GC ends up thinking it is claimable.
22:35 Infinoid I'm wary about the whole idea of explicitly freeing PMCs, for this reason
22:35 Infinoid especially since we don't refcount them
22:36 jonathan If they are explicitly created and freed within a given scope and have no chance to escape it ain't so bad.
22:36 jonathan But otherwise it's dangerous.
22:36 jonathan Particularly with RetContinuations, which can in their life time cease to be RetConts.
22:36 Infinoid I'm not even really sure what a RetContinuation *is*, but I had been assuming (from previous hacks in this code) that there's some sort of guarantee that there's only one reference to it
22:37 jonathan (e.g. when they are upgraded to full ones)
22:37 Infinoid But apparently there isn't.
22:37 jonathan That may be the intention. The failing here may be that the code doesn't check if the PMC was upgraded to a full continuation.
22:38 jonathan If you recycle something that got upgraded you're probably quite screwed.
22:38 jonathan (It's done as a v-table swap.)
22:38 Infinoid You're way over my head.  Are there some docs I can read so I can understand without slowing you down? :)
22:38 Infinoid (I'm not sure why or when you'd do that morph, or exactly what it means)
22:39 jonathan I've mostly gone on reading the code when I've been debugging stuff in that area more than reading docs. :-|
22:40 jonathan As far as I can grasp it, the idea of a RetContinuation is that it's "one shot" - that is, we'll only ever invoke the continuation once and we're done.
22:40 jonathan Which is the case for a straightforward thing-that-invokes-then-returns.
22:40 jonathan And when you start getting contexts referecning each other in more complex ways, that return continuation needs to become a full one.
22:41 jonathan I think some copying then takes place, or at least referencing incrementation on the contexts (since those are ref-counted).
22:41 Whiteknight well, my idea didn't pan out
22:41 Infinoid Do you create a RetContinuation when invoking a new sub, then?  And convert to a Continuation when you somehow end up making a closure out of it?
22:41 jonathan And we change the vtable pointer to Continuation from RetContinuation.
22:41 jonathan As far as I can understand it, yes.
22:42 Infinoid Makes sense, thanks
22:42 jonathan Anyway, the point is that in the lifecycle of a call, you can't rely on something that once was a RetContinuation staying as one.
22:42 Whiteknight but if it's not a retcontinuation anymore, then it wont call retcontinuation:invoke and therefore won't be explicitly freed
22:42 Whiteknight but you're right, something still is pointing to this object
22:43 jonathan Whiteknight: I can't quite tell exactly what's going on in this case, but I think it's something along these lines.
22:43 Infinoid Would boiling down the test case help?
22:48 Whiteknight Infinoid: I imagine so
22:49 Whiteknight what really needs to happen, I think, is to trace through a subroutine call and take note of all the places where a RetContinuation PMC is examined
22:49 Whiteknight and make sure that all those pointers are killed before explicitly freeing the retcontinuation
22:50 Infinoid .oO(wouldn't it be nice if we had a nice GC system to do all that hard work for us)
22:51 jonathan Oh, hmm
22:53 jonathan Whiteknight: Did you change the call to destroy and the free to Parrot_gc_free_pmc_header(interp, SELF); ?
22:53 jonathan Does that also call destroy?
22:53 jonathan If not we at least would leak memory.
22:54 jonathan You're right though. If we make it into invoke of the retcontinuation pmc, I don't see any code path between then and the freeing that would get us an extra reference.
22:57 jonathan Whiteknight: Also, when we free a normal continuation, we do
22:57 jonathan if (cc->from_ctx)
22:57 jonathan Parrot_free_context(interp, cc->from_ctx, 1);
22:57 jonathan In the destroy vtable mthod.
22:57 jonathan In a RetContinuation we don't do that.
22:58 jonathan Whiteknight: Oh, false alarm.
22:58 jonathan When a continuation is upgraded it takes on an additonal reference to the context.
22:58 jonathan So it balances ups.
23:01 jonathan So in conclusion, nothing jumps out as me at wrong in that department.
23:13 Whiteknight yeah, I didn't see anything obvious either
23:13 Whiteknight (sorry about delay, was eating)
23:14 Whiteknight when do RetContinuations upgrade to Continuations?
23:14 Whiteknight I know that it does happen, but I dont know in what situation
23:15 jonathan Look up (IIRC) retc_invalidate
23:15 jonathan When there is an outer I think they do.
23:16 jonathan But there may be other cases too.
23:16 jonathan Ah, maybe for with co-routines also.
23:16 Whiteknight oh, like in a tailcall?
23:16 Whiteknight okay, that makes good sense
23:16 jonathan I don't think a tail call would do it.
23:16 jonathan I mean :otuer
23:16 jonathan *:outer
23:16 jonathan If you have one of those you can make a closure.
23:17 Whiteknight okay
23:26 Whiteknight jonathan: Does rakudo build properly on Parrot HEAD now?
23:26 Whiteknight I want to make sure the GC refactor didn't bork anything higher up the chain
23:27 Whiteknight I did some testing, but I don't think I did enough
23:28 szbalint masak++
23:28 kid51 joined #parrot
23:28 jonathan Whiteknight: Let me pull and check.
23:28 jonathan erm, svn up
23:29 jonathan ETOOMUCHGIT
23:29 szbalint git svn rebase? :)
23:29 jonathan I never got to trying git svn yet. :-)
23:29 jonathan No idea how that works on Windows.
23:29 jonathan *Windows
23:30 jonathan For better or worse, my contributions to Parrot these days are relatively few, mostly smallish bug fixes.
23:30 dalek parrot: r38658 | jkeenan++ | branches/splint:
23:30 dalek parrot: Following discussion with petdance, removing a branch which hasn't been touched in 22 months.
23:30 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38658/
23:31 jonathan So don't deal with svn branches so much now that Rakudo moved over to git.
23:31 Whiteknight you're lucky, branches are TEH EVILZ!
23:32 jonathan Yeah, I don't admire git's learnability, but it's branch management is good.
23:33 * kid51 has no problem with svn branches.
23:34 szbalint svn branches become nasty when your directory that you branch contains >100MB or so, before that it's fine I guess.
23:36 bacek good morning from future
23:36 bacek cotto: around?
23:36 cotto bacek, nope
23:36 cotto this is a bot
23:36 bacek cotto: it's good. Then I can brake pmc_pct branch
23:37 cotto cotto's bot gives you permission
23:37 * jonathan ponders testing the bot's intelligence
23:37 jonathan cotto, bacon?
23:37 bacek cotto: good gir^W bot
23:37 cotto want
23:37 jonathan OK, it's intelligent. :-)
23:37 bacek cotto: swine flu
23:37 purl swine flu is the Swine Flu of our times!
23:38 cotto prefer bacon
23:38 jonathan purl sets a low standard. :-)
23:38 purl jonathan: huh?
23:38 bacek It's intelligent :)
23:38 bacek cotto: ok. I broke c_body emitting.
23:39 bacek in r38659
23:39 cotto go crazy.  I don't have any pending work.
23:40 dalek parrot: r38659 | bacek++ | branches/pmc_pct/compilers/pmcc (5 files):
23:40 dalek parrot: Initial parsing of VTABLE macros such as SELF, SUPER, etc. Emitting is broken
23:40 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38659/
23:40 cotto afk
23:40 cotto (and the bot too)
23:42 davidfetter .oO(and your little dog, too!)
23:54 * bacek want multi-dispatch in NQP...
23:55 jonathan bacek: Arity based?
23:56 bacek jonathan: PIR style. Even with manual supply of ":multi([Foo])"
23:57 dalek parrot: r38660 | bacek++ | branches/pmc_pct/compilers/pmcc/src/emitter/c.pir:
23:57 dalek parrot: Sligtly better c_body emitting
23:57 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38660/
23:57 dalek parrot: r38661 | bacek++ | branches/pmc_pct/compilers/pmcc/t/06-body.t:
23:57 dalek parrot: Fix test
23:57 dalek parrot: review: https://trac.parrot.org/parrot/changeset/38661/
23:57 bacek "sub foo :multi(_,['PAST';'Op']) { ... }"
23:57 bacek something like this. Then I can write PMC compiler purely in NQP
23:59 jonathan bacek: Ah, you're walking the PAST tree?
23:59 bacek jonathan: yes.
23:59 jonathan bacek: Ah. That's not a common thing for other languages to do, so it's not so surprising you're finding it a pain point.
23:59 jonathan (Since most want to then just go down to PIR.)
23:59 bacek I'm emitting C code :)
23:59 jonathan Aye.

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced