Camelia, the Perl 6 bug

IRC log for #parrot, 2012-12-06

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:46 Reini joined #parrot
01:10 benabik joined #parrot
01:14 Mike-PerlRecruiter_ joined #parrot
02:17 dalek parrot/native_pbc: f0c6afe | rurban++ | t/native_pbc/number.t:
02:17 dalek parrot/native_pbc: [GH #394] special case some native_pbc/number.t tests
02:17 dalek parrot/native_pbc:
02:17 dalek parrot/native_pbc: New marker for partially skipped tests: S4,S8 to skip on 4/8 byte platform
02:17 dalek parrot/native_pbc: T4,T8 to skip 4/8 byte pbc testfiles.
02:17 dalek parrot/native_pbc: Problem: 8_16_le=>4_8_le fails, but 8_16_le=>8_8_le passes
02:17 dalek parrot/native_pbc: review: https://github.com/parrot/parrot/commit/f0c6afed4c
02:53 davidfetter joined #parrot
04:36 Psyche^ joined #parrot
05:47 Reini joined #parrot
08:51 sjn_ joined #parrot
08:52 sjn_ left #parrot
09:32 jsut_ joined #parrot
11:20 migimunz joined #parrot
13:14 Mike-PerlRecruiter_ joined #parrot
13:41 PacoAir joined #parrot
13:52 Reini joined #parrot
13:59 migimunz joined #parrot
14:25 PacoAir joined #parrot
14:56 bluescreen joined #parrot
14:57 benabik joined #parrot
14:57 PacoAir joined #parrot
15:24 prammer joined #parrot
16:16 dmalcolm joined #parrot
16:46 mj41 joined #parrot
16:47 ttbot joined #parrot
16:58 Mike-PerlRecruiter_ joined #parrot
17:03 davidfetter joined #parrot
17:04 contingencyplan joined #parrot
17:04 dngor joined #parrot
17:05 benabik joined #parrot
17:05 bluescreen joined #parrot
17:16 dngor joined #parrot
17:58 Reini joined #parrot
18:10 benabik joined #parrot
18:10 rurban day7 perl6 advent preview: http://perl6advent.wordpress.com/?p=1217
18:11 rurban Anyone wants to write about parrot threads? I've reserved day 11 for us.
18:11 davidfetter 404
18:12 benabik It's not published yet, so it's not visible to people not logged in.  (Or perhaps not even everyone who is.)
18:12 davidfetter ah
18:13 * benabik isn't logged in, so is basing this on experience with other similar systems.
18:13 rurban I guess you need a wordpress account to see it. It should be public
18:14 Reini joined #parrot
18:14 rurban I see...
18:15 rurban https://gist.github.com/4226700
18:27 migimunz hello
18:27 migimunz do all PIR statements/opcodes have to be inside subs?
18:48 migimunz also, for local or captured variables, find_name should do the exact same thing as find_lex, right?
18:59 PerlJam migimunz: it seems like your first question you can easily test yourself.
19:03 benabik joined #parrot
19:03 migimunz PerlJam, I did, but I was thinking about having multiple files, and where I'd define my classes, etc
19:04 migimunz I'm not quite sure yet how parrot deals with multiple pir files tbh
19:16 dngor joined #parrot
19:31 Hunger joined #parrot
19:33 tuxit joined #parrot
19:52 rurban I think I have found a GC problem with threads and IO, when doing -t1 on something large
19:52 rurban gc_gms_mark_pmc_header: self->work_list might be empty
19:56 rurban https://github.com/parrot/parrot/issues/875
20:02 dalek parrot: ddf6aec | rurban++ | src/gc/gc_gms.c:
20:02 dalek parrot: [GH #875] Fix SEGV with empty GC self->work_list in the grey marker
20:02 dalek parrot:
20:02 dalek parrot: See https://github.com/parrot/parrot/issues/875
20:02 dalek parrot: Do not mark a PMC as grey if the self->work_list is empty.
20:02 dalek parrot: I do not know if that is correct, but it fixed the issue.
20:02 dalek parrot: review: https://github.com/parrot/parrot/commit/ddf6aecbba
20:11 * benabik dislikes "don't know if that is correct" in connection to the GC.
20:21 benabik In fact, I find that very suspicious.  GMS allocates the work_list at the beginning of the sweep and clears it at the end.  mark_header shouldn't be called outside of that...
20:33 rurban Yes, very disturbing. But --trace with a long list of output almost always triggers this bug.
20:49 benabik Oh, even worse.  The call stack says this is in gc_gms_mark_and_sweep.
20:50 autark joined #parrot
20:52 Coke --trace hasn't worked right in years.
20:53 davidfetter maybe it shouldn't be there, then
20:56 dalek Heuristic branch merge: pushed 28 commits to parrot by rurban
20:57 rurban haha, same axe as with -O1 which perfectly worked fine, only -O2 was broken, but now we no optimizer at all.
20:57 benabik What was just merged?
20:57 rurban Merged native_pbc
20:57 benabik rurban++
20:57 rurban You need to do a make clean, again as with threads
20:58 rurban Now the biggest changes are in.
20:58 rurban Some codingstd failures still...
21:01 benabik Hmmm....
21:01 benabik mark_interp marks its parent.  Is this a problem with threads?
21:05 rurban I'm finishing my merge and then check GC with threads. Each thread runs its own GC I heard
21:05 benabik That's my worry.
21:05 benabik I think what's happening is that trace_root is breaking that barrier.
21:06 rurban Oh...
21:06 benabik So the work_list is NULL because the parent isn't currently running GC.
21:08 benabik Also: mark_interp comment says "Mark an interpreter and all direct children", but it seems to walk _up_ the interps, not down.
21:13 dalek parrot: 38b82fb | rurban++ | / (3 files):
21:13 dalek parrot: [codingstd] fix 3 violations from native_pbc: hard tabs, cpp indents
21:13 dalek parrot: review: https://github.com/parrot/parrot/commit/38b82fbb2a
21:17 rurban m lib_deps was also broken for a while. Stupid perl5 piping error
21:18 rurban And only valid for 32-bit, ha!
21:36 Hunger joined #parrot
21:38 dalek parrot: 8911774 | rurban++ | examples/compilers/japhc.c:
21:38 dalek parrot: [examples] fix include of examples/compilers/japhc.c
21:38 dalek parrot:
21:38 dalek parrot: use #include "pmc/pmc_sub.h"
21:38 dalek parrot: review: https://github.com/parrot/parrot/commit/8911774bf1
21:38 dalek parrot: d3685d3 | rurban++ | tools/dev/lib_deps.pl:
21:38 dalek parrot: [tools] fix perl5 cmd pipes for make lib_deps
21:38 dalek parrot:
21:38 dalek parrot: Also enable nm parsing on 64-bit. The previous version did only 32-bit
21:38 dalek parrot: review: https://github.com/parrot/parrot/commit/d3685d3008
22:09 dalek parrot: ed7dac5 | rurban++ | / (2 files):
22:09 dalek parrot: [tools] more lib_deps: add -Iinclude/pmc
22:09 dalek parrot: review: https://github.com/parrot/parrot/commit/ed7dac5df1
22:29 rurban msg benabik can you come up with a better fix for thread & GC? Looks like we are sweeping too much.
22:29 aloha OK. I'll deliver the message.
22:39 migimunz hm, why does .lex take it's parameters comma separated, while .param and .local take them space separated?
22:51 rurban migimunz: good question but too late to change
22:52 migimunz rurban, I was just wondering if there's a reason to it, or a way to know which directive requires which syntax
22:52 migimunz I don't mind it otherwise
22:54 rurban Ideally only compiler writers should care about .pir quirks. A user should just compile his src to .pir/.pbc
22:55 migimunz well, I am writing a compiler for a custom language
22:55 rurban Welcome :)
22:55 migimunz thanks :D
23:02 Hunger joined #parrot
23:03 benabik joined #parrot
23:10 whiteknight joined #parrot
23:10 rurban benabik: can you come up with a better fix for thread & GC? Looks like we are sweeping too much.
23:12 benabik rurban: I'm not sure what the correct fix is and I'm too distracted right now to work on it.
23:13 * diakopter relurks from a distance; ttyl :)
23:13 diakopter left #parrot
23:14 rurban I see. I have an idea, but I also have no time yet.
23:31 aloha joined #parrot
23:40 whiteknight rurban: What's the problem?
23:41 rurban 321048a1f1558 and issue #875
23:41 rurban https://github.com/parrot/parrot/issues/875
23:42 whiteknight ok
23:43 whiteknight The "real" solution, in the long term, is to switch to an explicitly concurrent GC algorithm
23:43 rurban I fixed it temporlarily by checking against an empty GC ->work_list, but benabik thinks that we can cut a thread sweep at all from roots into a Task
23:43 rurban GC should only run in its own interp
23:44 rurban That's our idea
23:46 rurban GC should traverse from root only the children interp's, but not the parents
23:47 rurban Is our GC not explicitly concurrent already?
23:48 whiteknight no, it's a single-threaded algorithm, that runs independently in each thread

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

Parrot | source cross referenced