|
Parrot 4.2.0 "Ornithopter" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 10 April 2012. |
|||
|
00:13
whiteknight joined
|
|||
| whiteknight | good evening, #parrot | 00:13 | |
| dalek | sella: 7ea6df7 | Whiteknight++ | s (6 files): [Json] Add a Builder object that traverses the parse and builds output, so we can override the behavior without duplicating the parser |
01:05 | |
| sella: 0f02ad6 | Whiteknight++ | s (2 files): [Winxed] Add a header for winxed |
01:23 | ||
| cotto | ~~ | 01:31 | |
| whiteknight | hello cotto | 01:33 | |
|
01:40
Kovensky joined
|
|||
| dalek | rrotStore: f3bb28e | Whiteknight++ | / (4 files): [Memcached] Break memcached code up into separate files. Add a setup.winxed with basic build rules for memcached lib. |
01:44 | |
| rrotStore: 84a6234 | Whiteknight++ | Makefile: [Makefile] Add a makefile |
|||
| rrotStore: 046e0e3 | Whiteknight++ | memcached.winxed: [Memcached] Remove old test file for memcached bindings |
|||
| rrotStore: e721e8d | Whiteknight++ | mongodb/ (4 files): [MongoDB] Add in some quick (unbuilt, untested) braindump files for MongoDB bindings |
|||
| rrotStore: d1a86c9 | Whiteknight++ | mysql/pmc/ (2 files): [MySql] Quick braindump of bindings for MySql |
|||
| rrotStore: 25d45b0 | Whiteknight++ | .gitignore: Add a quick .gitignore file |
|||
| rrotStore: cb9fbb3 | Whiteknight++ | setup.winxed: [Memcached] Add the memcached .pbc to the install list |
01:52 | ||
| rrotStore: 2a1da33 | Whiteknight++ | memcached/Memcached.winxed: [Memcached] Add some TODO notes |
01:53 | ||
| whiteknight | I think that's plenty of work for one night | 01:54 | |
|
06:14
bacek joined
06:48
fperrad joined
07:39
jsut joined
08:32
lucian joined
08:42
Tene joined
09:00
Tene joined
09:03
jsut_ joined
09:24
particle1 joined
09:28
rich joined
09:39
particle joined
10:26
wagle joined
10:31
whiteknight joined
10:41
wagle joined
|
|||
| whiteknight | good morning, #parrot | 10:51 | |
|
11:01
JimmyZ joined
11:25
bluescreen joined
|
|||
| rich | hi there | 11:49 | |
|
11:52
PacoAir joined
|
|||
| whiteknight | hello rich | 12:05 | |
|
12:36
mdupont joined
|
|||
| dalek | rrotStore: 2c5fa1d | Whiteknight++ | / (8 files): [MongoDB] Reference the mongodb c driver repo. Several fixes to get the mongodb pmcs to build (untested) |
12:39 | |
| sella: 0ae739c | Whiteknight++ | s (2 files): [Json] Add a header file to the install |
12:55 | ||
|
13:04
kid51 joined,
jsut joined
13:06
JimmyZ joined
|
|||
| dalek | kudo/nom: 1fa8fb5 | (Felix Herrmann)++ | src/core/Exception.pm: Make Exception.Bool return True Signed-off-by: Moritz Lenz <moritz@faui2k3.org> |
13:50 | |
| nine | whiteknight: shouldn't Parrot_gc_pool_is_owned(interp, self->pmc_allocator, pmc) return true for all PMCs allocated on the current interp? | 14:11 | |
| whiteknight | nine: yes | ||
| nine: you can probably add a shortcircuit (if pmc->orig_interp != interp) return; | |||
| nine | whiteknight: it fails even in ./parrot-nqp --target=pir compilers/data_json/JSON.nqp > runtime/parrot/languages/JSON/JSON.pir | 14:12 | |
| whiteknight | hmmmm | ||
| and you aren't creating any threads there, right? | |||
| nine | I added an assertion to gc_gms_validate_objects right before the PARROT_ASSERT_INTERP | ||
| whiteknight: not that I'm aware of | |||
| whiteknight | somewhere we're losing a PMC | 14:13 | |
| does the interp keep a reference to the current task, and does that task PMC get marked by GC? | |||
| nine | just tried to find out if it's a foreign PMC being put into the GC's object list or if an existing object somehow gets overwritten. This result is unexpected | ||
| whiteknight | Right, I think we have to focus on the small amount of code in the main entry way that is changed, since that's the only code that's used in the data_json code | 14:14 | |
| nine | But something's not right here: (void*)pmc is 0x7fffe6f0afe0. self->pmc_allocator->arena_bounds[36496] is 0x7fffe6f0a2b8 and self->pmc_allocator->arena_bounds[36497] is 0x7fffe6f0b2a8 | 14:23 | |
| Looks to me like the pointer is within one of the areas of the allocator. | |||
| whiteknight | but it has a different orig_interp? | 14:26 | |
| nine | Oh, but it's not at the right position. ((pmc - pool->arena_bounds[36496]) % 48) should be 0. But (0x7fffe6f0afe0 - 0x7fffe6f0a2b8) % 48 is 8 | 14:27 | |
| orig_interp is fine in this case | |||
| as it would be in a non-threaded test | 14:28 | ||
| 48 is the pool's object_size | |||
| 8 would be the size of a pointer on my machine. IIRC a PMC header is actually allocated with a pointer in front, so I guess Parrot_gc_pool_is_owned(interp, self->pmc_allocator, ptr) would be the correct variant | 14:30 | ||
| And indeed the build now succeeds | 14:31 | ||
| whiteknight | hmmm | ||
| nine | And in the threaded test, the PMC really seems to belong to the interp's memory pool, but it's orig_interp is different | 14:32 | |
| Seems to indicate that the PMC gets overwritten after being added to the GC's object list | |||
| whiteknight | yes, that's what I've been thinking | 14:35 | |
| nine | is there any way to tell gdb that MarkSweep_GC should be the one from gc_gmc.c, not the one from gc_ms2.c? | 14:40 | |
|
14:46
jsut_ joined
|
|||
| whiteknight | nine: It's all done by pointers | 14:54 | |
| interp->gc_private, or something like that | |||
|
14:55
JimmyZ_ joined
|
|||
| nine | Yes but since that's a generic pointer I have to cast it. But if I cast it to (MarkSweep_GC*) gdb choses the one from gc_ms2.c. I guess that's the first it finds. Anyway, the first member in both structs is the same | 14:55 | |
| oh | 14:56 | ||
| whiteknight: it gets stranger and stranger. Seems like I was wrong. The PMC with the wrong orig_interp really got allocated on orig_interp according to debug output in get_new_pmc_header. | 14:58 | ||
| whiteknight | nine: so it get allocated in the correct interp, or in the wrong interp? | ||
| nine | whiteknight: it gets allocated on the child thread, but lands in the objects list of the main thread's GC. And it belongs to the main thread's allocator pool. | 15:00 | |
| dalek | Heuristic branch merge: pushed 16 commits to rakudo/nom by jnthn | ||
| whiteknight | nine: how does it possibly end up in that list? We've added asserts to all routines that add items to the list | 15:04 | |
| nine | And another correction: it belongs to the child thread's pool. I just put the Parrot_gc_pool_is_owned into the wrong function. So allocation seems to be fine. It just somehow appears on the wrong objects list out of nowhere. | 15:05 | |
| dalek | kudo/nom: ac083c5 | jnthn++ | docs/ChangeLog: Fill out ChangeLog a little more. |
15:09 | |
| nine | whiteknight: I just went again over gc_gms.c checking all places where objects is accessed. The assertions are everywhere | 15:12 | |
| whiteknight: it only happens if both threads allocate/collect garbage from time to time. They do not have to do it at the same time however. And it does only happen if the main thread is involved. With two child threads allocating/collecting and the main thread just busy waiting it's no problem at all. | 15:23 | ||
| whiteknight: with variations in the test program, the foreign PMC it finds is different so it's not related to any specific object. It's just some random PMC appearing in the wrong list. | 15:47 | ||
| benabik | ~~ | 15:51 | |
|
15:59
JimmyZ_ joined
16:01
JimmyZ joined
16:54
JimmyZ_ joined
|
|||
| whiteknight | nine: curiouser and curiouser | 17:05 | |
|
17:06
kid51 joined
|
|||
| whiteknight | Can somebody explain to me why the loadlib_p_s opcode returns undefined when it fails, and there is absolutely no mechanism whatsoever to find out why it failed? | 17:07 | |
| benabik | whiteknight: Didn't you write it? | ||
| Oh. | |||
| whiteknight | benabik: no, this is the loadlib opcode, not load_bytecode or load_language | ||
| benabik | Yeah, just noticed that. | 17:08 | |
| whiteknight | cotto: ping | ||
| That opcode should either throw an exception with the dlerror() text, or we should provide a second op to provide access to that value | 17:09 | ||
| because it silently failing, and me having to use a debugger to find out why is not acceptable | |||
| cotto | whiteknight, pong | 17:13 | |
| whiteknight | cotto: I'd like to fix the loadlib opcode | ||
| when it fails, it returns undef with no information | |||
| I think it should either throw an exception with the message from dlerror(), or we should have a separate op to expose that method | |||
| you pick, I code | 17:14 | ||
| cotto | those sound like a more appropriate way to fail | ||
| have you looked at how much code depends on the current behavior, especially in rakudo? | 17:15 | ||
| Throwing an exception strikes me as the better alternative. | |||
|
17:27
jashwanth joined
17:28
bluescreen joined
17:34
awwaiid joined
|
|||
| dalek | p/cstruct-work: 51a3250 | (Arne SkjƦrholt)++ | src/6model/reprs/CStruct.c: Start letting CStruct have CArray members. |
17:48 | |
| p/cstruct-work: 6700db0 | (Arne SkjƦrholt)++ | .gitignore: Ignore OS X bundles. |
|||
| kudo/nom: 73ce76a | tadzik++ | lib/Pod/To/Text.pm: [Pod::To::Text] Print subs and methods prettier This delibarately skips invocant and optional named params in method signature for the sake of readability and the least amount of confusion. We're not using simply Sub.perl and Method.perl since they may contain the source code one day, and we almost certainly don't need that. |
17:53 | ||
| whiteknight | cotto: I'll send a message to parrot-dev to solicit opinions | 18:03 | |
| dalek | p/cstruct-work: 3bde5a3 | (Arne SkjƦrholt)++ | src/6model/reprs/CStruct.c: Remove some TODOs since they weren't actually necessary. jnthn++ |
18:12 | |
| cotto | whiteknight, good idea | 18:25 | |
|
18:48
kid51 joined
|
|||
| dalek | rrotStore: 4b278c3 | Whiteknight++ | / (5 files): [MongoDB] Remove the submodule |
19:05 | |
| rrotStore: 3b6ebe4 | Whiteknight++ | / (4 files): [MySQL] Add the mysql pmc to the build. A few fixes so it actually generates the .so and is loadable |
|||
|
19:27
kid51 joined
|
|||
| dalek | kudo/nom: 03edce1 | moritz++ | docs/running.pod: document --doc |
19:30 | |
| rrot: 18ac2cd | petdance++ | lib/Parrot/Distribution.pm: Properly escape the . in qr/.t/ |
19:41 | ||
| rrot: b878029 | petdance++ | lib/Parrot/ (7 files): removed unnecessary /o flags from regexes |
|||
|
19:50
contingencyplan joined
|
|||
| dalek | kudo/nom: e60c80c | moritz++ | src/core/IO/ArgFiles.pm: implement ArgFiles.slurp |
20:02 | |
| kudo/nom: 9d489dd | moritz++ | src/core/ (2 files): rename ArgFiles to IO::ArgFiles |
|||
| kudo/nom: d9753c1 | moritz++ | src/core/IO (2 files): implement zero-arg slurp |
|||
| kudo/nom: 2676549 | jnthn++ | / (2 files): Start to sketch out a PseudoStash that will handle many of the pseudo-packages. Not yet wired up, let alone complete. |
20:38 | ||
| kudo/nom: 1c862bc | jnthn++ | src/Perl6/ (2 files): Start to clean up indirect lookup handling a little. Also fix a bug in the compile time handling of indirect lookups. |
|||
| kudo/nom: 68df8f5 | jnthn++ | src/ (3 files): Switch indirect name lookups to use the new root PseudoStash approach. Still much missing in PseudoStash to make that work yet, mind. Also a little more elimination of duplicate logic. |
|||
| kudo/nom: 7f28736 | jnthn++ | src/Perl6/Grammar.pm: Unbust a typed exception. |
|||
| kudo/nom: 5a31737 | jnthn++ | src/core/PseudoStash.pm: Get things like ::('MY::$a') and $::('OUTER::b') working. |
|||
| kudo/nom: c59411c | jnthn++ | src/ (2 files): Flesh out pseudo-package handling a bit more. Now all of the interpolated lookup tests that now take a similar code path all pass again (and we should handle a bunch more cases now). |
|||
|
20:40
mdupont_ joined
21:00
alvis joined
|
|||
| dalek | kudo/nom: b82d905 | jnthn++ | src/Perl6/ (3 files): Further clean up term:sym<name>, so we don't do any of the reparsing and don't rebuild the LongName object. Since we encounter this rule a fair amount, this seems to improve compilation performance a little. |
21:32 | |
| whiteknight | I wish that this MySQL API was just a little bit nicer | 21:57 | |
| dalek | rrotStore: e0faff7 | Whiteknight++ | mysql/pmc/mysqldbcontext.pmc: [MySQL] small fix so we can connecto to the mysql database and execute queries with no return values |
22:19 | |
| rrotStore: de4db04 | Whiteknight++ | mysql/pmc/mysqldbcontext.pmc: [MySQL] Use mysql_real_query instead of the deprecated mysql_query |
|||
| rrotStore: 4c6b989 | Whiteknight++ | / (6 files): [MySQL] Add in MySqlDataTable and MySqlDataRow types. Make sure they build. Untested |
|||
| kudo/nom: 84f4fd4 | jnthn++ | src/Perl6/ (2 files): Implement ::<$x> style accesses, and make OUTER::<$x>, CALLER::<$x> and MY::<$x> work. |
22:21 | ||
| kudo/nom: 9b4f785 | jnthn++ | src/core/PseudoStash.pm: Fix DYNAMIC, so it now basically works. |
|||
| kudo/nom: c384ab7 | jnthn++ | src/core/PseudoStash.pm: First crack at OUR. |
22:42 | ||
|
23:45
autark joined
|
|||