Parrot 3.10.0 "Apple Pi" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 2 December 2011.
00:08 kid51 joined 00:26 Nol888 joined 00:37 kid51_ joined
dalek itor: 44eced5 | NotFound++ | src/Guitor (2 files):
create an input context for a window when selecting KeyPress evennts and

This allows composed characters, at least in west europ keyboards
00:57
01:04 schmooster joined 01:54 Yuki_N joined
dalek itor: 2d9fcd6 | NotFound++ | / (2 files):
improvements in EditBox and key events
01:58
cotto ~~ 02:14
dalek itor: 1300fd9 | NotFound++ | examples/text.winxed:
Improve example text - Use with care, eats a lot of X resources
02:29
itor: 0b5531c | NotFound++ | src/Guitor (2 files):
fix the big leak of XftDraw
02:44
itor: a1cd41b | NotFound++ | src/Guitor.winxed:
another XftDraw leak
02:51
dukeleto this is the best news the Parrot world has seen in a while: hg.openjdk.java.net/hsx/hotspot-rt/...3f01599ff4 02:57
dalek itor: 4336d81 | NotFound++ | src/Guitor.winxed:
fix a leak in GetAtomName
NotFound dukeleto: Uh? 03:00
cotto NotFound, looks like Oracle's started putting "commercial features" in the jvm, which require separate licensing. 03:10
03:10 cdbs joined
cdbs This is the parrot dev channel, right? 03:10
cotto cdbs, yup. Welcome. 03:11
Assuming you want the Parrot virtual machine.
cdbs cotto: I'm working on a GCI task to clean up src/interp/*
cotto: and I have to rename functions in there
I've already done that
cotto: but the issue is, blib/lib/libparrot.so seems to be a precompiled library that already has the old funtion names baked in 03:12
cotto: where's the source to it?
cotto cdbs, libparrot is part of the build
cdbs cotto: but I can't find the source file to it 03:13
cotto much of the C in Parrot gets compiled into libparrot
cdbs alright
I'll peek into the makefile
*allright
cotto running "make" should get you a fresh libparrot 03:14
cdbs thanks 03:17
03:20 kid51_ joined
cotto x264dev.multimedia.cx/archives/658 06:50
"The neutering of Google Code-In 2011"
I both find it funny and pretty much agree. 06:53
dukeleto yeah. the changes to GCI this year did not reduce the gaming of the system 07:18
07:46 zby_home joined
cotto nope. just different gaming 07:49
I'm not entirely sure why gaming the system is discouraged. Nobody's writing fake code. 07:51
the incentives are set up pretty well 07:54
but google will spend their money as they see fit and are free to write the rules around it however they like 07:57
09:58 JimmyZ joined 10:27 particle1 joined 10:58 preflex_ joined 11:24 fperrad joined 11:28 lucian joined 12:13 Psyche^ joined 14:20 kid51 joined 14:21 dafrito joined 14:47 dafrito joined 14:51 dafrito joined
dalek itor: cd3da1b | NotFound++ | src/Guitor.winxed:
avoid zero terminating strings in places that doesn't need it
14:55
14:55 Aleksandar joined 14:57 zby_home_ joined 15:28 schmooster joined 15:48 Aleksandar joined
dukeleto ~~ 16:46
dalek rrot: f71f8ab | Sasho++ | docs/binaries/winxed.pod:
new winxed POD doc
16:49
rrot: 10cd463 | Sasho++ | docs/binaries/winxed.pod:
new fixes
rrot: 47373da | Sasho++ | docs/binaries/winxed.pod:
winxed POD
rrot: 52e5b49 | Sasho++ | docs/binaries/winxed.pod:
winxed doc
rrot: 833584a | dukeleto++ | docs/binaries/winxed.pod:
Merge pull request #216 from Alekssasho/winxed_POD_docs

GCI Task Winxed POD docs
itor: fcaaf32 | NotFound++ | examples/winxed_repl.winxed:
new example: a winxed REPL
16:52
rrot: 96fa2c5 | dukeleto++ | docs/binaries/winxed.pod:
[docs] Tweak winxed binary docs
16:54
NotFound msg whiteknight Take a look at github.com/NotFound/Guitor/commit/fcaaf323ca 16:59
aloha OK. I'll deliver the message.
nine How can it be that interp->cur_task is marked by the GC as live, but the task's mark VTABLE method does not get called? 17:07
NotFound nine: It has the custom mark flag set? 17:08
17:09 schmooster joined
nine NotFound: yes. The thing is: the first time the GC runs the method is called. The next run it doesn't get called anymore and the task's code is garbage collected 17:09
NotFound Bizarre 17:11
nine And it only seems to happen on another thread. On the main thread it works fine. But it cannot be some thread interaction, since there are only two threads and the main thread is sleeping all the time in this test 17:12
NotFound There is a mark_interp static function in gc/mark_sweep.c that says "Mark an interpreter and all direct children" but looking at it I'm not sure it really does that. 17:16
On the contrary, it seems to look for its parent, not its childs.
benabik Is there a link parent->child, or just child->parent? 17:17
nine NotFound: yep, it marks it's parent which is why I had to unset the thread interp's parent. Otherwise the thread's GC would start marking another thread's interp...
benabik: AFAIK only child->parent
benabik That would make it very difficult to mark all child interps
nine benabik: the child would be the responsibility of whatever code lead to it's creation in the first place 17:18
benabik Then mark_interp's comment should be fixed. :-D
NotFound And the ParrotInterpreter PMC doesn't have a custom mark. 17:19
nine I think the comment is not about child interpreters but just PMCs stored in the interp
Interpreters are handled very specially by the GC
NotFound nine: the problem usually is when "very specially" means "wrong". 17:20
nine It usually also means very confusing...
NotFound There is a run_gc method in ParrotInterpreter that ack doesn't found in any other part of the tree. 17:21
nine Oh and never try to store ParrotInterpreters in ResizablePMCArrays or something like that. Learned that the hard way... using a C array instead now
benabik nine: What happens?
(And that sounds like a decent argument for using a mark function on the interp PMC instead of a special mark_interp function) 17:22
nine benabik: many extremely confusing backtraces that give no hint about what's wrong. Spent a whole night trying to get it to work before just using a C array and having a working system within half an hour
NotFound How is the GC working now? Child interps use the same GC as its parent, or they are like independent interpreters? 17:24
nine Parrot_gc_mark_PMC_alive only marks the PMC but is not responsible for calling the PMC's mark am I right? That seems to be gc_gms_process_dirty_list's and gc_gms_process_work_list's job 17:26
NotFound: every interp has it's own GC in the threads branch. Threads run as separated as possible with only a narrow communications interface
NotFound Then probably at some point some PMC is marked in the wrong interpreter. 17:30
nine NotFound: unlikely. The main thread goes to sleep immediately after starting the second thread and I put debug output into gc_gms_mark_and_sweep showing that only the thread's GC goes into action 17:33
Adding a manual VTABLE_mark(interp, interp->cur_task); into mark_interp after Parrot_gc_mark_PMC_alive(interp, interp->cur_task); definitely improves the situation. 17:34
NotFound nine: that sounds like lack of custom mark flag. 17:35
nine There's PObj_custom_mark_SET(SELF); in task.pmc init() 17:37
And I confirmed in gdb that the flag is still set at the time of the segfault
NotFound Strange... maybe the cur_task doesn't get sweeped? 17:39
If the gc think it's already marked, Parrot_gc_mark... will not call VTABLE_mark. 17:40
nine The debug output of the first GC run shows that the task gets marked, then it's VTABLE_mark is called and then the task is marked again. On the second run it's only marked once and VTABLE_mark is not called 17:42
"task gets marked" means explicitely by mark_interp which is where the fprintf is
Correction: on the second run it also gets marked twice 17:43
NotFound Sounds like the GC think it's already marked. 17:53
18:00 ambs joined 18:02 contingencyplan joined 18:03 nbrown joined
nine NotFound: seems like you're right. have a break on mark_interp and the task's live flag is already set before Parrot_gc_mark_PMC_alive is called 18:17
btw. the GC_soil_root flag is also set. Could this have anything to do with the problem or is this to be expected? 18:21
The second call to mark_interp comes from gc_gms_validate_objects 18:26
NotFound I didn't know such flag existed- 18:29
nine Two things that seem very strange to me: 1. the task is marked alive at the time of the validate_objects call which it should not be. But even if it weren't it would get marked alive by the validate call. And since gc_gms_validate_objects is the last statement in gc_gms_mark_and_sweep the flag has to stay 18:31
Which seems to be true for all PMCs that the interp references 18:34
Unfortunately I have to leave now (should have half an hour ago...). Will try to solve this riddle tomorrow. Thanks for help anyway :) 18:35
NotFound NM
dalek nxed: 93d4251 | NotFound++ | t/basic/04switch.t:
Merge pull request #16 from Alekssasho/master

Google Code In Task Expression-less Switch Tests
18:49
dukeleto ~~ 19:10
dalek itor: a47ddf7 | NotFound++ | src/Guitor.winxed:
fix insertion in EditBox
19:16
itor: f4502ba | NotFound++ | src/Guitor.winxed:
fix set value while on focus in EditBox
19:21
itor: 7ca54e8 | NotFound++ | examples/winxed_repl.winxed:
history in example REPL
19:34
rrot: 36e4eb5 | (Peter Polacik)++ | src/packfile/api.c:
Fixed problem with g++ compilation
19:41
rrot: d226e47 | dukeleto++ | / (12 files):
Merge pull request #217 from pepol/master

GCI 2011: Cleanup src/extend.c Done && fixed g++ compilation
19:51 bacek joined 20:34 nbrown joined 20:35 perlite joined 22:00 rfw joined
dalek kudo/nom: b238ce4 | jnthn++ | src/core/ (3 files):
Give Positional/Associative/Callable type parameters.
22:15
kudo/nom: 2344572 | jnthn++ | / (2 files):
Bump to latest NQP.
kudo/nom: 7a8679d | jnthn++ | src/ (5 files):
Generalize type parameterization. T[...] now calls T.^parameterize(...), and ParametricRoleGroupHOW gets to decide about CurriedRoleHOW, which is now an implementation details.
kudo/nom: 823b1fa | jnthn++ | src/Perl6/Metamodel/ClassHOW.pm:
Stub in an implementation of ClassHOW.parameterize.
kudo/nom: 3c6b5e5 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Fix a bug in generic instantiation of parameters; the container descriptor also needs to be instantiated.
kudo/nom: 80669d0 | jnthn++ | src/ (2 files):
Make SomeTypeObj but ARole just give you back a new type object representing the original type plus the role mxied in. Explicitly forbid this for does, since you can't change a type object in place.
22:57 sykrex joined 22:59 PerlJam joined 23:00 pmichaud joined 23:05 Coke joined 23:06 Util joined 23:09 estrabd joined 23:20 mj41 joined