|
Parrot 1.3.0 "Andean Swift" released | parrot.org | Parrot VM Workshop, Pittsburgh, June 20-21 Set by moderator on 16 June 2009. |
|||
|
00:12
AndyA joined
00:30
bacek_ joined
00:43
ronsvg joined
|
|||
| ronsvg | First I tried: | 00:43 | |
| ron@zoe:~$ git clone git://github.com/rakudo/rakudo.git | 00:44 | ||
| Initialized empty Git repository in /home/ron/rakudo/.git/ | |||
| remote: Counting objects: 16457, done. | |||
| remote: Compressing objects: 100% (4671/4671), done. | |||
| remote: Total 16457 (delta 11974), reused 15717 (delta 11445) | |||
| Then this died: | |||
| ron@zoe:~/rakudo$ perl Configure.pl --gen-parrot | |||
| Generating Parrot ... | |||
| /usr/bin/perl build/gen_parrot.pl | |||
| Checking out Parrot r39599 via svn... | |||
| svn: OPTIONS of 'svn.parrot.org/parrot/trunk': could not connect to server (svn.parrot.org) | |||
| the location of parrot_config to be used to build Rakudo Perl. | |||
| Building Parrot ... | |||
| Unable to locate parrot_config | |||
| To automatically checkout (svn) and build a copy of parrot r39599, | |||
| try re-running Configure.pl with the '--gen-parrot' option. | |||
| Or, use the '--parrot-config' option to explicitly specify | |||
| the location of parrot_config to be used to build Rakudo Perl. | |||
| Instructions taken from: rakudo.org/how-to-get-rakudo | 00:45 | ||
|
00:49
ronsvg left
|
|||
| Coke | looks like when gen-parrot ran, there was a connection problem to the parrot svn server. | 00:53 | |
| I just did an svn up; should be ok now. | |||
|
00:58
MoC joined
01:07
dukeleto joined
02:25
rakudohudson joined
02:42
Zak joined
03:06
zak_ joined
03:17
magnachef joined
03:20
donaldh joined
|
|||
| cotto | skids++ #"we have to keep in mind that volunteer coder skill sets vary widely... not all developers are capable of grasping a project the size of Parrot and must restrict their attention to subsystems -- either that, or do no coding and just a lot of talking about coding." | 03:20 | |
|
03:51
dduncan joined
05:02
Zak joined
05:04
dduncan left
05:40
Theory joined
05:53
sparkymat joined
06:01
amuck joined
06:04
zak_ joined
06:28
dukeleto joined
06:30
petdance joined
06:32
iblechbot joined
|
|||
| dalek | rrot: r39673 | petdance++ | trunk (2 files): turns out that key_string can return NULL. |
06:32 | |
|
07:20
donaldh joined
08:23
dukeleto joined
08:45
amuck_ joined
|
|||
| mikehh | all tests PASS at r39673 - pre/post config, smoke, fulltest - Ubuntu 7.04 i386 | 10:23 | |
| dalek | a: aaff848 | fperrad++ | src/lib/luastring.pir: fix a duplicate identifier .param/.local |
10:25 | |
|
10:30
iblechbot joined
11:20
donaldh joined
11:27
darbelo joined
11:32
masak joined
12:01
sparkymat joined
|
|||
| sparkymat | How is Cardinal coming along? | 12:07 | |
| darbelo | I think it's being developed at github.com/cardinal/cardinal/tree/master now. | 12:09 | |
| Don't know how active it is, you should probably ask fperrad if he's arround. | 12:12 | ||
|
12:16
viklund_ joined
|
|||
| cotto | I thought cardinal was Tene's project. | 12:27 | |
| sparkymat | I thought so too.. I was hoping that Tene was around.. | 12:28 | |
|
12:29
MoC joined
|
|||
| cotto | you can always msg him | 12:30 | |
| sparkymat | here? | ||
| purl | here is probably all i know of you. but then, here is all you know of me. :) it's like... like... time for a beer, i think. | ||
| cotto | yeah. just say 'msg Tene Have a nice day' or something and purl will relay the message once he says something | ||
| cotto wanders off to pvmw | 12:33 | ||
| rblackwe | Good luck to all looking for the Parrot VM Workshop. | 12:50 | |
|
12:58
cotto joined
|
|||
| jdv79_ | yeah, looks like = vs := - thanks | 12:59 | |
| Infinoid | jdv79_: Great. So the next question is, why did parrot use =? (It switches them to = if configure detected a non-gnu make, I think.) | 13:00 | |
| Infinoid reenables polyglotbot's crontab | 13:01 | ||
| rakudo: say %*VM<config><VERSION> | 13:02 | ||
| polyglotbot | OUTPUT[1.3.0ā¤] | 13:03 | |
| Infinoid | rakudo: say %*VM<config><revision> | ||
| polyglotbot | OUTPUT[Parrot VM: Can't stat languages/perl6/perl6.pbc, code 2.ā¤main: Packfile loading failedā¤] | ||
| Infinoid | ah, it's rebuilding rakudo now | ||
|
13:03
s1n_yapc joined
|
|||
| Infinoid | rakudo: say %*VM<config><revision> | 13:05 | |
| polyglotbot | OUTPUT[39673ā¤] | ||
|
13:09
kid51 joined
13:10
Austin_Hastings joined
|
|||
| Infinoid | Tene: I guess the next step for polyglotbot is to have bounce-trees for each HLL so they can be updated atomically as well | 13:10 | |
| but the config/makefile system needs some help for running HLLs on non-installed parrots before that becomes useful | 13:11 | ||
| kid51 | Parrot VM Workshop now underway | 13:12 | |
| The president speaks! | |||
| Austin_Hastings | Aww, man. First, no food. Now the "dog ate my homework." | 13:13 | |
|
13:16
magnachef joined
13:19
Austin_Hastings left
|
|||
| rblackwe | Organizing for PVMW lunch etherpad.com/0iwPLcPjMG | 13:24 | |
| feel free to join in. | |||
|
13:32
magnachef joined
13:33
McC joined
13:45
hachi joined
13:49
mikecanz joined
|
|||
| dalek | rrot: r39674 | cotto++ | trunk/examples/tutorial (15 files): [examples] use $P0 = new foo? notation in examples |
14:10 | |
| cotto | That's the preferred notation, for any of you at pvmw. | 14:11 | |
| s1n_yapc | cotto: what's wrong with the previous notation? | 14:16 | |
|
14:17
jhorwitz joined
|
|||
| jhorwitz virtually looks in at PVMW | 14:18 | ||
| cotto | pmichaud will cover it later. Both work fine for now. | ||
|
14:19
Whiteknight joined
|
|||
| Whiteknight | finally at YAPC! | 14:21 | |
| cotto | Yay! Good luck finding the pvmw. | 14:23 | |
| Whiteknight | I know, it took me over 45 minutes! | ||
|
14:24
skids joined
|
|||
| Whiteknight | this campus is a goddamn nightmare | 14:24 | |
| rblackwe | Whiteknight: thank Mr. Gates and his new building. | 14:25 | |
| Finding PVWM is the Parrot fitness plan | |||
|
14:26
mj41_ joined
14:51
mikecanz joined
14:56
ttbot joined,
mj41 joined
|
|||
| Whiteknight | Infinoid: ping | 15:14 | |
| purl msg Infinoid: there are a get tests in t/op/io.t that assume FileHandle=Pipe. these are causing failures in the io_cleanups branch. Can you let me know whether you think this behavior is still valid? | 15:16 | ||
| purl | Message for infinoid stored. | ||
|
15:20
donaldh joined
|
|||
| nopaste | "mikehh" at 92.30.51.48 pasted "Some test timings for coretest and on other runcores" (37 lines) at nopaste.snit.ch/16979 | 15:47 | |
| dalek | TT #778 created by whiteknight++: Make FileHandle Subclassable | 15:49 | |
| Whiteknight | mikehh: how do those numbers compare to what they were last month? | 15:50 | |
| or do you not have comparisons? | |||
| mikehh | looking at this the rugular core seems to be fastest on the tests (if you subtract the other tests it runs) | ||
| Whiteknight - I think they are quite a bit faster - let me look at some of my logs | 15:51 | ||
| Whiteknight | I'm very surprised that -f outperformed -S | 15:53 | |
| I'm also surprised that -C and -j ran as fast as they did | |||
| for the test suite with lots of little programs, -C and -j have a lot of extra overhead that should slow them down | |||
| Whiteknight is always happy to see things going faster | 16:07 | ||
|
16:10
Theory joined
16:15
Psyche^ joined
|
|||
| Infinoid | Whiteknight: since I haven't introduced a PipeHandle type yet, I can't really complain about FileHandle pipes yet | 16:16 | |
| Whiteknight | Infinoid: We have the io_cleanups branch to play in now, if you want to start working on that there | 16:26 | |
| I'm happy to help, but I think you have the vision for it | 16:27 | ||
|
16:29
burmas joined
|
|||
| Whiteknight | I keep looking at the pipe code, just waiting to chop that up into little bits | 16:33 | |
| er, not pipe. "sockets". It's the sockets code I want to chop up | 16:37 | ||
| Infinoid | heh, yeah | ||
| socket subclasses will be fun | |||
| actually, pipes work fine as far as I can tell (which isn't far) | |||
| it's threaded tests I'm having a problem with | |||
| Whiteknight | threaded tests? which ones? | 16:38 | |
| Infinoid | testing Pipe requires a couple of threads | ||
| Whiteknight | hey, are you at YAPC? | ||
| or, going to YAPC? | |||
| purl | See : going to yapc::na or yapc::whatever or cwest, uri, DrForr or dha | ||
| Infinoid | nope, I'm at home in bed | ||
| the sound of rain makes me tired. :) | |||
| Whiteknight | yeah, it was raining really hard during my drive out here | 16:39 | |
| I spend about three hours in the car wishing I was back in bed | |||
| and then another two hours in the car wishing I was in a McDonalds getting some food | |||
| Infinoid | in 100 years, they'll have little mini-mcdonalds built right into your glove box | ||
|
16:40
MoC joined
|
|||
| Whiteknight | and those mini-mcdonalds will run on Parrot 101.3.0 | 16:41 | |
| Infinoid | and gas stations will have little Fast Food Pellets to refuel it | ||
| Whiteknight | that would be sweet | 16:42 | |
| Infinoid | that would be horrible for our lifespan as a species :) | ||
| you'd have people who could no longer squeeze out of their cars (or hoverjets or whatever) | 16:45 | ||
| anyway, here's my problem with pipes | 16:46 | ||
| nopaste | "infinoid" at 65.18.171.17 pasted "The Patch" (388 lines) at nopaste.snit.ch/16980 | 16:47 | |
| cotto | << | ||
| nopaste | "infinoid" at 65.18.171.17 pasted "The Test" (71 lines) at nopaste.snit.ch/16981 | ||
| "infinoid" at 65.18.171.17 pasted "The Fail" (26 lines) at nopaste.snit.ch/16982 | |||
| dalek | rtcl: r509 | coke++ | branches/tclstring: Attempt to subclass our string-like PMC with a pir class. |
16:51 | |
| rtcl: r510 | coke++ | branches/tclstring/ (7 files): - rename tclstring pmc to tclstringpmc - simplify the pir_compiler test to reliably pre-load the tcl library for the test. |
|||
|
16:56
cognominal joined
|
|||
| Whiteknight | THE FAIL! | 16:56 | |
| purl | the fail is strong in you | ||
| Whiteknight | wow, that's a shitty failure | 16:58 | |
| Infinoid | I'm not really sure where to start... | ||
| Whiteknight | what class name is it looking for there? | 16:59 | |
| and are you sure that Pipe and PipeHandle are being compiled into the .so? | 17:01 | ||
| Infinoid | 'Test;Builder' | ||
| Whiteknight | did you make realclean after you added those? | ||
| Infinoid | (gdb) print interp->vtables[enum_class_Pipe]->init | ||
| $4 = (init_method_t) 0x7fbe2aeeed60 <Parrot_Pipe_init> | |||
| yes. | |||
| Whiteknight | okay then | ||
| that shut me up | 17:02 | ||
| Infinoid | I think it's failing to clone a pir class ... somehow | ||
| Whiteknight | so yeah, run in gdb, put a break point on Parrot_Confess, and figure out what that class_name string is | ||
| Infinoid | I haven't used parrot threads for much | ||
| class_name is 'Test;Builder' | |||
| Whiteknight | so...? what? | 17:03 | |
| purl | so is, like, $foo->does('rolename') the only way to tell if a given object conforms to a role (or has a role composed into it... still working on the terminology) | ||
| Whiteknight | just adding those two pmcs causes this failure? | ||
| that's retarded | |||
| Infinoid | well, I'm probably misusing the threads api somehow in my test | 17:04 | |
|
17:04
s1n_yapc joined
|
|||
| Infinoid | I spawn a thread and get this crash | 17:04 | |
| Whiteknight | I do know that interpreter cloning is a little broken, so that might include not cloning the class hash | ||
| Infinoid | just having the pmcs built in is fine; I can comment out this test (as the version in The Patch does) and the simple object creation tests work fine | 17:05 | |
| ok. is there a better way to spawn a thread to manage the other end of the pipe for my test? :) | |||
| (some variant of fork() which also works on win32 would work equally well for me) | 17:06 | ||
| Whiteknight | yeah, creating the new thread in the test must not properly clone the class hash | 17:07 | |
| Infinoid | thing is, I nabbed the thread-spawning syntax directly from the "thread type 1" test in t/pmc/threads.t | 17:08 | |
| but that test is written in perl, so I guess it didn't load Test;Builder. | |||
| Whiteknight | I assume Test;Builder is being included from Test_more.pir? | 17:12 | |
| Infinoid | load_bytecode 'Test/Builder.pbc' | 17:13 | |
| Whiteknight doesn't know a lot about testing, including parrot's test environment | |||
| Infinoid | Test/More and Test/Builder both seem to be loaded as pbc | ||
| Whiteknight | in that test you nopasted, I don't see Test/Builder anywhere | 17:14 | |
| Infinoid | right. but runtime/parrot/library/Test/More.pir loads it | ||
| Whiteknight | ah, that's what I was trying to figure out. Okay | ||
| what namespace is it loaded into? | 17:15 | ||
| and is the thread running in that namespace? | |||
| Infinoid | .namespace [ 'Test'; 'Builder' ] | ||
| and I doubt it. | |||
| Whiteknight | i really don't know a lot about how threading works either | 17:16 | |
| Infinoid | and I don't know a lot about how namespaces work :) | ||
| Whiteknight | I usually don't learn a lot about system until I decide it's time to completely rewrite it :) | ||
| Infinoid | heh, same here | ||
| maybe I can spawn the thread *before* loading the test libs | 17:17 | ||
| Whiteknight | yeah, any number of crackpot ideas could work | ||
| Infinoid | no clean way to report failure, tho | 17:18 | |
| Whiteknight | urg? | ||
| purl | rumour has it urg is basically a schwarztian + a pass to normalize the keys to managable values as I read it | ||
| Infinoid | well, I need to create the pipe before I spawn the thread, so each thread can handle one half of the pipe | ||
|
17:18
McC joined
|
|||
| Infinoid | but earlier in the same test, I check whether creating pipes work... so I'd have to do that first pipe blind | 17:18 | |
| so it's not a very good workaround. | 17:19 | ||
| Whiteknight | maybe keep it the way you have it, but load test_more.pir again in the thread | ||
| Infinoid | I think it might crash before executing that part, but I'll try it | ||
| Whiteknight | do or do not. There is no try | 17:20 | |
| Infinoid | crash or crash not, there is no do | 17:21 | |
| it crashed in the same spot... | |||
| Whiteknight | damnit | ||
| maybe threads are just TEH SUCK right now | |||
| Infinoid | I don't think it's getting through the run_clone() method | 17:22 | |
| they seem to be a work in progress | |||
| Whiteknight | what does that method do anyway? | ||
| Infinoid | it's supposed to run a pir function (specified by name) in a separate thread | ||
| Whiteknight | I'll probably end up doing some thread cleanup work when I get started on AIO | ||
| which should be soon | |||
| Infinoid | that makes sense. if you don't clean them up, they will very likely block you, just like they're blocking me | 17:23 | |
| I want to use the same kind of threads for socket tests, too | |||
| that said, it looks like a fairly deep rabbit hole, which is why I haven't looked too far into it | 17:24 | ||
| Tene | Infinoid: sounds like the problem I reported earlier | 17:25 | |
| interp cloning fails an assert when any classes of some type exist | 17:26 | ||
| Infinoid | Tene: If there's already a ticket number, I can go complain in its comments :) | ||
| Whiteknight | If nobody owns it, assign it to me | ||
| Tene | Infinoid: name is something like cannot create thread when hll loaded | ||
| Infinoid | ok. I guess I can simplify that further. No hll here, just a pir test class | 17:27 | |
| ah, #757: Problem with threads and HLLs | |||
| Tene | it looked like it failed on any class from a nested namespace or something | 17:28 | |
| Whiteknight | Tene: pmichaud just blamed you for a problem in his presentation | ||
| Tene | Whiteknight: explain more? | ||
| cotto | wish you were here | ||
| purl | hmmm... wish you were here is a good easy one | ||
| Whiteknight | the .HLL directive broke his PCT demonstration | ||
| he had to change some of his code somewhere to fix it | 17:29 | ||
| Tene | Whiteknight: can you describe what he changed in here? | ||
| cotto: me too. | |||
| Whiteknight | he was doing a PCT example, and had .HLL, and it couldn't find a method because it wasn't in the same .HLL | 17:30 | |
| he'll have to give you the details, I'm too busy chatting online to be paying attention | |||
| cotto | it's a good reason for him to cover what .hll and .namespace do | 17:31 | |
| Whiteknight | ah, the generated code from his compiler wasn't in the right .HLL but the method was | 17:32 | |
| Tene | ah | ||
| kk | |||
| Yeah, I really wanted to be there, but the timing didn't work out. sad I'm missing it. | |||
| Infinoid | So I tried to write a simpler test case for #757, and ran into an even weirder issue | 17:34 | |
| Tene | Man, I missed last yapc because I was moving too. No more moving during June. | ||
| Infinoid | src/thread.c:379: failed assertion 'interp' | ||
| That function takes two interpreter arguments... interp is the second one | |||
| Whiteknight | I was a parrot newbie last year in June and didn't even thinkabout going | ||
| plus I was a poor student | |||
| Tene | I hope the ISP guy gets here soon. He's supposed to arrive today. | 17:35 | |
| Stuck on my phone until then. | |||
| Infinoid | My ISP guy gets here tuesday | ||
| Whiteknight | that stinks | ||
| Infinoid | same here. | ||
| Whiteknight | you could come over to my place and use the WIFI? | 17:37 | |
| well, I'm not home again till Tuesday | |||
| Infinoid | some weekend, perhaps :) | 17:38 | |
| I like punishing AT&T for having crappy service, anyway | |||
| #3 0x00007fb2cb0317de in pt_thread_signal (self=0x143e690, interp=0x0) at src/thread.c:379 | 17:40 | ||
| Whiteknight | they haven't even gotten to your house yet and you know the service will be crappy | ||
| ?? | |||
| Infinoid | I have no idea what this code is doing, but I already hate it | 17:41 | |
| Whiteknight | ORLY? | 17:42 | |
| purl | YA RLY. | ||
| Whiteknight | thanks purl | ||
| Infinoid | oh, the ISP guy is from verizon. AT&T is my the cell provider, hopefully fios will be better | ||
| s/my the/my/ | |||
| Whiteknight | fios? Haven't you seen those comcast comercials that make fios look so bad? | 17:43 | |
| aren't you swayed by that? | |||
| Infinoid | no, and no | ||
| Whiteknight | well take my word for it, the commercials suck | 17:44 | |
| I don't know what TV is like on the west coast, but here on the east coast our commercials are horrible | |||
| Infinoid | commercials are horrible on the west coast too. I didn't own a TV there, and I don't own one here either | 17:45 | |
| Whiteknight | we have a TV but I watch very little of it | 17:49 | |
| dalek | tracwiki: v19 | Austin_Hastings++ | ParrotQuotes | 17:52 | |
| tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff | |||
| Infinoid | Ok, I've attached a very simple test case to TT #757. trac.parrot.org/parrot/attachment/.../tt757.pir | 17:56 | |
| comment out the .include line and it runs fine | |||
| It seems there are some other corner cases with threads, I ran into another one while boiling down this one. If you never call 'join'(), parrot crashes with the null interp I mentioned earlier | 17:58 | ||
| That's not related to this issue tho | |||
|
18:01
Zak joined
|
|||
| nopaste | "Util" at 128.237.238.202 pasted "Magic for Hachi" (25 lines) at nopaste.snit.ch/16984 | 18:02 | |
| Tene | Infinoid: I'm debating betwwweeen diving into 757 and working on pynie today | 18:10 | |
| after I'm done grocery shopping with the gf | |||
| cotto | Util++ #more magic | 18:11 | |
|
18:12
davidfetter joined
|
|||
| Whiteknight | urg, that's an ugly backtrace | 18:12 | |
| Tene: What's the status of pynie? | 18:13 | ||
| davidfetter | anybody @ yapc yet? | ||
| kid51 | workshop in progress; > 30 in attendance | 18:14 | |
| Util | davidfetter: all of us sitting now in the Parrot workshop | ||
| davidfetter | d'oh. | ||
| davidfetter just got in. ORD was awful last night | |||
| Whiteknight | DUNDUNDUN! | ||
| Tene | Whiteknight: no classes at all | 18:15 | |
| Whiteknight | Util, you're here? | ||
| davidfetter | wehre teh p4rr0t w0rksh0pz0rz? | ||
| Util | Yes, only one against the back wall. | ||
| Whiteknight | davidgetter: the newel-simon hall | ||
| look right | |||
| kid51 | #15 on CMU map | 18:16 | |
| Tene | Whiteknight: basic functions and builtin stuff works okay | ||
| Whiteknight | davidfetter: good luck finding it | ||
| Tene: okay, awesome | |||
| I still need to learn Python | |||
| hachi | I walked until I was about to cross a bridge | 18:17 | |
| davidfetter | I HAZ CMU MAP. ITZ CONFUZING | ||
| hachi | turned on the last driveway | ||
| walked back in there | |||
| Util | davidfetter: major construction blocks all straight paths from dorms or University Center to Newell-Simon | ||
| hachi | and found the building | ||
| Tene | Whiteknight: I want to get classes and import working so that it can participate in HLL interop | ||
| Whiteknight | davidfetter: the map is nothing. CMU is like a mix of the Labyrinth with an MC Escher painting, except the people building it were on drugs | ||
| davidfetter thinks Whiteknight is doing a disservice to a lot of innocent drug users | 18:18 | ||
| Whiteknight | ...i mean the bad drugs | ||
| cotto | and the people building it are still here | ||
| Whiteknight | they were on the bad drugs, not the good ones | ||
| seriously! The stupid construction people blocked off like all of the walkways | 18:19 | ||
| davidfetter | o/` snortin' whiskey o/` | ||
| | | I can | ||
| fit | |||
| davidfetter | hachi, heh | 18:21 | |
| hachi | wrong window, oh well :) | ||
| davidfetter mischans to keep hachi company | 18:22 | ||
| is there an officious yapc channel? | 18:24 | ||
| Whiteknight | #yapc | ||
| davidfetter | ah, i'd looked on fleanode 1st | 18:25 | |
| Whiteknight | yeah, fleanode is the worst | ||
|
18:46
whoppix joined
18:47
particle[ventus] joined
|
|||
| kid51 | en.wikipedia.org/wiki/Crossing_the_Chasm | 18:59 | |
|
19:20
donaldh joined
|
|||
| Infinoid | In the GC, what the heck is a Sync* structure? | 19:28 | |
| I'm fixing some thread-related leaks, and cloning the interpreter calls Parrot_gc_add_pmc_sync which allocates some PMC_sync() thingy that is never freed. | |||
| Whiteknight | Sync is a mutex | ||
| Infinoid | oh, ok | ||
| Whiteknight | it allows pmcs to be shared between threads without conflicts | ||
| at least, that's what I think it is | 19:29 | ||
| I've never used them beyond my fumbling with them in the gC | |||
| Infinoid | well, lets see if I can free it without causing new crashes | ||
| Whiteknight | Infinoid: I thought they were freed when pmc_ext was freed | ||
| Sync is attached to pmc_ext, so I would look there for them | |||
| Infinoid | Maybe they are. It's also possible that they're allocated twice | 19:30 | |
| src/pmc/parrotinterpreter.pmc line 68 is a comment, "we'd like to share the HLL data. Give it a PMC_sync structure if it doesn't have one already" | |||
| ...but it's allocated without ever checking to see if one existed already | |||
| Whiteknight | that's definitely possible, the GC is a shithole for that kind of stuff | ||
| Infinoid | I'll throw in some tracing to see what the story is | 19:31 | |
| Whiteknight | okay, nice | ||
| Infinoid | Yep, sometimes PMC_sync() was already nonzero | 19:32 | |
| Think I can safely return leaving the existing one intact, in that case? | |||
| Infinoid does "make test" to find out. | 19:33 | ||
| Whiteknight | yeah, it's definitely worth a test | 19:36 | |
| Infinoid | Cool. All tests pass, 2 leaks plugged, 1 to go | ||
| Whiteknight | that field should be initialized to 0 in the gc, so if it's nonzero it aready exists | ||
| Infinoid++ | |||
| Infinoid | The last one is the fun one :) | 19:37 | |
| ==22264== 62,895,904 (160,000 direct, 62,735,904 indirect) bytes in 200 blocks are definitely lost in loss record 40 of 192 | |||
| ==22264== at 0x4C21FAB: calloc (vg_replace_malloc.c:279) | |||
| ==22264== by 0x4F14A70: mem_sys_allocate_zeroed (alloc_memory.c:105) | |||
| ==22264== by 0x4F9408C: parrot_alloc_vtables (vtables.c:132) | |||
| Whiteknight | dealing with those Syncs is one of those tasks that I always figured i would get around to eventually | ||
| Infinoid | (that's from a pir loop creating and joining 200 threads) | ||
| Whiteknight | and eventually never comes because I've got more important stuff to do | ||
| holy crap | 19:38 | ||
| purl | only in the Vatican, my friend | ||
| Whiteknight | that's terrible | ||
| Infinoid | I haven't touched Syncs at all; I just put in a check so I don't call Parrot_gc_add_pmc_sync if a value already existed | ||
| Whiteknight | right, so they might not be freed in the GC when the pmc_ext is freed | ||
| Infinoid | nah, they were just allocated twice. That leak is plugged, vtables is next | 19:39 | |
| cotto | seen backe | ||
| purl | I haven't seen 'backe', cotto | ||
| cotto | seen bacek | ||
| purl | bacek was last seen on #parrot 2 days, 11 hours, 3 minutes and 25 seconds ago, saying: cotto++ # Hooray! pmc_pct ftw! [Jun 18 08:31:45 2009] | ||
| cotto | more to come | ||
| Whiteknight | src/gc/api.c:365 | ||
| that's where Sync should be getting freed | 19:40 | ||
| Infinoid | and it was | ||
| Whiteknight | it's worth checking whether that condition matches all cases of existing Syncs | ||
| Infinoid | but src/gc/api.c:397 was allocating a new Sync, even when a previous one existed, overwriting the old pointer | ||
| that's what leaked | 19:41 | ||
| Whiteknight | urg | ||
| Infinoid | (at least, for this particular test case) | ||
| Whiteknight | so that was the entire leak? | ||
| Infinoid | My test case is just tt757.pir without the .include, in a 0-200 loop | 19:42 | |
| Whiteknight | ah, okay. I see that now | ||
| that is a pretty lousy function, isn't it? | |||
| Infinoid | yeah, that was the second one of 3 leaks total | ||
| I dunno. I didn't spend much time trying to understand it :) | |||
| Whiteknight | me either, I mostly prettied up the garbage code that was already there | 19:43 | |
| that's probably going to fix some bugs too | 19:44 | ||
| since it was basically just overwriting a mutex which may have been locked | |||
| Infinoid | hmm. That sounds difficult to test | 19:45 | |
| but you're definitely right | |||
| Whiteknight | the thread system definitely needs our patented version of cleanup though | ||
| no doubts about that | |||
|
19:46
particle[ventus] joined
|
|||
| Whiteknight | yay particle! | 19:46 | |
| welcome back to the world of the internet | |||
| Infinoid is tweaking ParrotInterpreter.init, and afraid that bats are going to fly out of my text editor and gouge my eyes out | 19:48 | ||
| davidfetter | it was bat country | 19:50 | |
| Infinoid | oh, I love how ParrotInterpreter.destroy() makes no attempt to free up the Parrot_Interp whatsoever | ||
| Whiteknight | that doesn't even seem like the right place to do it | 19:51 | |
| :) | |||
| Infinoid | well, nothing else is doing it in this case | ||
| I'm just trying to figure out the code | |||
| Whiteknight | is that memory being leaked? | 19:52 | |
| Infinoid | interp->vtables is (and a bunch of stuff being pointed to by that array) | ||
| Whiteknight | hah, great | ||
| Infinoid | that's the 62 megs I pasted above | ||
| Whiteknight | We'll have to add some functions to the GC API to recursively free all that shit | ||
| because I'm sure we'll want to use that in more places then ParrotInterpreter.destroy | 19:53 | ||
| Is the vtables array the same for all interpreters, or can each interpreter have it's own list? | |||
| that doesn't make sense because then you wouldn't be able to share types between interpreters that have different arrays, because the integer indexes would be different | 19:54 | ||
| Infinoid | I've leaked 200 vtables arrays, so each interpreter must have its own | 19:55 | |
| Whiteknight | okay, well that may be a source of your problems in the pipe thing | ||
| the arrays must be getting out of sync and when we try to share stuff it borks with great justice | 19:56 | ||
| for every zig | |||
| Infinoid | hmm. the rewrite alarm in my head is going off really loudly right now | ||
| Whiteknight | ? | ||
| Infinoid | this is the kind of thing you see which, when you're looking through, trying to perhaps tweak a subsystem, makes you want to just rewrite it from scratch | ||
| Whiteknight | agreed | 19:57 | |
| davidfetter | technical debt | ||
| purl | rumour has it technical debt is the debt you build up of stuff you have to do later. c2.com/cgi/wiki?TechnicalDebt or www.media-landscape.com/yapc/2006-0...ndyLester/ | ||
| Whiteknight | this is one of those cases where somebody said "let me just prototype this quickly", and then never got around to doing it better | ||
| davidfetter | stfu, purl | ||
| purl | it has been said that stfu is DCC SEND "FURBLELOGGER" 0 0 0 or eval: join"",map uc,map$_ eq"i"?"u":$_,("fist"=~/./sg)[2,3,0,1] or "Show Them Fury Unleashed" or St. Thomas Franciscan University | ||
| Infinoid | I dunno, I give parrot a lot of credit for having working threads at all. The fact that it is *almost* working as-is is pretty awesome. I doubt I could do better in a reasonable amount of time | 19:58 | |
| but it is hard to read | |||
| Whiteknight | does need major refactoring in any case | 19:59 | |
| Infinoid | the ParrotInterpreter PMC has a create_interp() helper function, but doesn't have any corresponding destroy_interp() | 20:01 | |
| Do you have any clues as to where these things are *supposed* to be freed? | |||
| Whiteknight | probably in the destroy VTABLE. That's the right place to do it | ||
| it's just getting do'd | |||
| Infinoid | the destroy VTABLE frees the attrs struct and that's all | ||
| Whiteknight | well that's retarded | ||
| Infinoid | I was going to say "confusing", but yes :) | 20:02 | |
| Whiteknight | retarded == confusing, for some values of retarded :) | ||
| davidfetter | free() the malloc()s! | 20:03 | |
| Whiteknight | great, add some political activism to the GC | ||
| Infinoid | it looks like the Interp structure itself is being freed just fine, somewhere (not anywhere in this file that I can find),but their ->vtables arrays are being leaked | ||
| Whiteknight | Infinoid: Where are you looking, parrotinterpreter.pmc or parrothread.pmc? | ||
|
20:04
flh joined
|
|||
| Infinoid | And of course, valgrind doesn't tell me where the valid stuff is, so I don't really know where to look. | 20:04 | |
| parrotinterpreter.pmc | |||
| Whiteknight | why do you think that the interpreter is being freed properly? | ||
| Infinoid | Because it isn't reported as lost by valgrind | ||
| Here, I'll give you the whole allocation trace | |||
| nopaste | "Infinoid" at 65.18.171.17 pasted "leaked vtables arrays" (22 lines) at nopaste.snit.ch/16985 | 20:05 | |
| Infinoid | apparently ParrotThread creates a ParrotInterpreter, and some bits of the Parrot_Interp contained by the ParrotInterpreter are freed and some aren't, and I have no idea where that happens. | ||
| Whiteknight | check out src/thread.c:pt_thread_join | 20:06 | |
| it's destroying an interp in there | |||
| at least, i think it is | |||
| Infinoid | oh, awesome | 20:07 | |
| Whiteknight | AHA! | 20:09 | |
| I found it | |||
| src/interp/inter_create.c:435 | |||
| it only destroys the vtables if the parent interp is null | |||
| but for a thread, this isn't the case | |||
| parrot_free_vtables is the function to do it I think | 20:10 | ||
| (assuming it's named properly) | |||
| nopaste | "infinoid" at 65.18.171.17 pasted "full leak check log, grep for "definitely lost" and look for the one that has 200 blocks" (5996 lines) at nopaste.snit.ch/16986 | ||
| Infinoid | oh, nice. I'll try that as soon as this silly nopaste goes through | ||
| there we go | |||
| Whiteknight | I don't know how deep the vtable copy goes, so parrot_free_vtables may do too much | 20:11 | |
| but if it's a completely deep copy, that's the function to call I think | |||
| Infinoid | I'm doing a make test now, then I'll retry valgrind | 20:12 | |
| Whiteknight | okay, awesome | ||
| Infinoid | well spotted btw, Whiteknight++ | ||
| there's an ifelse there, and the former block has a whole lot more stuff in it than the latter block. I have to wonder what else is being overlooked | 20:13 | ||
| Whiteknight | I had a suspicion it was somewhere in thread.c, if it was being freed at all and if it wasn't happening in parrotinterpreter.pmc:destroy() | ||
| Infinoid | parrotinterpreter.pmc:destroy() is misleadingly useless | ||
| nice! ==368== definitely lost: 58 bytes in 2 blocks. | 20:14 | ||
| Whiteknight | I have to think that this is far too eager, the memory should be managed in destroy() by the GC, not managed manually by the threading system | ||
| Infinoid | You've just cleaned up 62 megs of leaked memory | ||
| Whiteknight | !!! | ||
| Infinoid | (and yes, "make test" still works just fine) | 20:15 | |
| Whiteknight | Infinoid++ | ||
| Infinoid | No, Whiteknight++ | ||
| Whiteknight | everybody++ | ||
| Infinoid | karma everybody | ||
| purl | everybody has karma of 5 | ||
| Whiteknight | so 200 threads started and joining only leaks 58 bytes? | 20:16 | |
| Infinoid | yes | ||
| Whiteknight | fantastic | ||
| Infinoid | there's an IMCC leak where it strdup()s the pir filename and doesn't free it | ||
| Whiteknight | becauase that means it's not an issue with the threads at all | ||
| Infinoid | and Parrot_gc_add_pmc_sync() still leaks once, rather than 201 times | 20:17 | |
| Whiteknight | really? wtf? | ||
|
20:17
AndyA joined
|
|||
| Infinoid | I don't know. The previous value of PMC_sync() is null, I haven't dug into that one yet because the numbers were smaller | 20:17 | |
| I'm going to commit what I have and then do a profiling run (which was my goal all along) | |||
| Whiteknight | in Parrot_gc_free_pmc_ext, remove the condition PObj_is_PMC_shared_TEST(p) | 20:19 | |
| that's not necessary and might result in false negatives | 20:20 | ||
| Infinoid | I think those would show up in valgrind | 20:21 | |
| Whiteknight | okay, nevermind then | ||
| so there's another leak outstanding that's not showing in valgrind? | 20:22 | ||
| Infinoid | sorry, I tend to trust tools that are smarter than I am :) | ||
| well, valgrind shows 2... I'm unaware of any others | |||
| Whiteknight | ok | ||
| Infinoid | it should be blindingly obvious at this point that we don't use threads nearly enough | 20:23 | |
| Whiteknight | a lot of that I'm sure is because the implementation is lousy | ||
| and none of the HLLs are blocking on it | 20:24 | ||
| Infinoid | Right. If we used it every day, we'd stomp out the bugs much faster | ||
| Whiteknight | That's why we need a pure-parrot test harness | 20:25 | |
| Infinoid profiles thread creation and destruction | |||
| hmm, true | |||
| Whiteknight | parrot-test -j9 would kick ass | ||
| dalek | rrot: r39675 | Infinoid++ | trunk/src (5 files): Fix 3 thread-related leaks. 2. Parrot_gc_add_pmc_sync() allocates a new PMC_sync() value without checking to see if one already existed. Add a check, only call it when we don't already have one. 3. Parrot_really_destroy() did not free the vtables[] array in the case where interp->parent_interpreter was set. The vtables array is per-thread, so it needs to be freed regardless. Whiteknight++ for finding this one. In a simple pir test (based on the tt757 test case) which created and joined a thread 200 times, this patch fixes 62 megs of leaked memory. |
||
| Whiteknight | awesome | 20:26 | |
| Infinoid | I'd love it if you could sanity check that, it touches several bits of deep core code | ||
| oh, wow. So I profiled 200 thread creations and destructions, and found that 47% of the time was spent in Parrot_gc_merge_buffer_pools | 20:28 | ||
| Is that something new, or just something specific to the test case? | |||
| it was run 3200 times | 20:29 | ||
| Whiteknight | all tests pass! | 20:31 | |
| purl | Time to write more tests! | ||
| Whiteknight | purl never said something so true | 20:32 | |
| purl | Whiteknight: sorry... | ||
| Whiteknight | it's okay purl, I'm sure it will never happen again | ||
| Infinoid | heh | ||
| Whiteknight | Infinoid: I think the check for whether we have a Sync should happen in Parrot_gc_add_pmc_sync | 20:33 | |
| A similar check should happen in Parrot_gc_add_pmc_ext | 20:34 | ||
| the GC needs so much work... | 20:35 | ||
| Infinoid | Whiteknight: I did end up moving the check into Parrot_gc_add_pmc_sync, but it looks like I forgot to update the commit message | 20:36 | |
| Whiteknight | ah, okay | ||
| i didn't refresh the file in my editor | |||
| Infinoid | I've gone back to looking at Parrot_really_destroy. I'll bet if a thread loads a dynop, that won't be freed | 20:40 | |
| (not that I have any idea how one loads a dynop) | |||
| Whiteknight | (or how one frees a dynop) | 20:41 | |
| dalek | rrot: r39676 | whiteknight++ | trunk/src/gc/api.c: [gc] following the lead set by Infinoid++, add a quick check to the gc to prevent allocating a pmc_ext when one has already been allocated. |
20:42 | |
| rrot: r39677 | whiteknight++ | trunk/src/gc/api.c: [gc] the last commit, plus codingstd |
|||
| Whiteknight | I bet that last commit will help simplify some for the clone code | 20:44 | |
| Infinoid wants a commit bit to the english language grammar. "sillily" needs to be a word | 20:46 | ||
|
20:47
dukeleto joined
|
|||
| davidfetter words sillily | 20:47 | ||
| cotto dewords 'words' as a verb | 20:48 | ||
| wait. that didn't do what I wanted it to. | |||
| Infinoid | wordificates! | ||
| davidfetter | Infinoid, there hasn't been a central repo for english grammar in quite some time, although many have tried to claim to be it | ||
| it went DSCM in the 1770s, approx | 20:49 | ||
| Infinoid | wordulates? wordifies, enwordenates | ||
| the current grammar definitely has some design bugs | |||
|
20:50
s1n_yapc joined
|
|||
| Tene | Sweet, internet access at home. | 20:51 | |
| davidfetter | good to have :) | ||
| Infinoid | Ok. So Parrot_really_destroy was called 200 times, each of those called Parrot_gc_merge_header_pools twice (400 total), and that calls Parrot_gc_merge_buffer_pools 8 times each (3200 total), and that's where half of parrot's time was spent for this test | 20:53 | |
|
20:53
kid51 joined
|
|||
| Infinoid | For heavy thread loads, that's going to be a huge bottleneck. Fortunately, we don't have any of those loads yet | 20:53 | |
| dalek | rrot: r39678 | whiteknight++ | trunk/src (2 files): [pmc] now that we're sanely checking for existing pmc_exts in the GC, we can remove some checks elsewhere |
20:55 | |
| Infinoid | Rain, rain, rain. The more it rains, the less I want to go outside, rain is good for parrot | 20:57 | |
| dukeleto | Infinoid: yeah, the raininess of PDX has a lot to do with how much coding gets done here | ||
| dalek | rrot: r39679 | whiteknight++ | trunk/src/pmc.c: [pmc] more cleanups |
20:58 | |
| rrot: r39680 | cotto++ | trunk/lib/Parrot/Pmc2c/PMCEmitter.pm: [pmc2c] simplify code to assume that if a PMC has parents, default will be the first (if it's there at all) |
|||
|
20:59
zak_ joined
|
|||
| Whiteknight | I'm getting closer and closer to starting a threading_cleanups branch now | 21:00 | |
| s1n_yapc | what's the patch submission process now that parrot is not using rt? | 21:02 | |
| Whiteknight | parrot is on trac now | 21:03 | |
| trac.parrot.org | |||
| same idea, different interface | |||
| s1n_yapc | just attach it directly as a patch? include it in the message? | 21:04 | |
| Whiteknight | when creating a new ticket there shold be a button to attach a file | ||
| or you can put it directly in the ticket. Use {{{ ... }}} to code format it | 21:05 | ||
| s1n_yapc | Whiteknight: what's the preferred method? | ||
| Whiteknight | no preference that I'm aware of, although if the patch is huge it's probably better to attach a file | 21:06 | |
| kid51 | It's strictly a web interface -- no email at this time --. There is an Attach File button which is best for true patches, as it creates a download link for other users. | ||
| Follow {{{ }}} instructions for smaller bits of code. | |||
| Coke skims through review. | 21:07 | ||
| s1n_yapc | kid51, Whiteknight: thanks | ||
| Whiteknight | no problem | ||
| Coke | is pvmw today? | 21:09 | |
| s1n_yapc | Coke: yes | ||
| Coke | enjoy. | ||
| glad to see memory leaks being tracked. partcl still has leaks, no doubt, if folks are bored. =-) | 21:10 | ||
| s1n_yapc | how do we specify an svn revision rather than a release? | ||
| Coke | (and a ton of other blockers.) | ||
| s1n_yapc: specify it where? | |||
| s1n_yapc | Coke: in a new ticket | ||
| Coke | say "trunk" | 21:11 | |
| kid51 | In trak, r12345 translatest to hyperlink to SVN commit 12345 | ||
| Coke | mention the revision # in the body of the ticket. | ||
| right. just say r14135 in the ticket. | |||
| Infinoid | Coke_PS3: If you can boil those down to (preferably simple) pir test cases, I'll take a look | 21:12 | |
| kid51 | Actually, that should be TT #12345 | ||
| Strike last statement; last statement is way you refer to other Trac tickets | |||
| r12345 if for SVN | 21:13 | ||
| When in doubt, preview | |||
| dalek | TT #779 created by s1n++: [tools] modify fetch_languages.pl to only fetch a specific language | ||
| s1n_yapc | kid51: the r12345 does in fact make a link | ||
| Infinoid | When not in doubt, preview anyway :) | ||
| s1n_yapc | dalek now posts new TT? | ||
| dalek | rrot: r39681 | whiteknight++ | branches/io_cleanups/src (2 files): [io_cleanups] add socket to the list of types that can be handled by Parrot_io_close |
21:19 | |
| rrot: r39682 | cotto++ | branches/pmc_pct/compilers/pmcc/src (2 files): [pmcc] put all VTABLE functions in vtables{'default'} to allow a logical place for variant vtables |
21:22 | ||
| Infinoid | s1n_yapc: Yeah, opens and closes, not comments or updates | 21:27 | |
| s1n_yapc | Infinoid: good to know | 21:28 | |
| is there a formal process to becoming a cage cleaner? | |||
| Infinoid | Cleaning cages is a good start :) Nothing formal though | ||
| s1n_yapc | is a CLA required? | 21:29 | |
| are the specific people that act as "guides" | |||
| Infinoid | CLA is required for a committer. People generally start out just pushing patches here using nopaste.snit.ch though | ||
| commit access comes later | |||
| There is a docs/project/cage_cleaners_guide.pod if you haven't already read that | |||
| s1n_yapc | Infinoid: i'll start there and ask more questions later | 21:30 | |
| Infinoid | If you run into anything that seems confusing, don't hesitate to ask. I'm not sure how up to date it is | ||
| Whiteknight | yeah, send in patches, and when we like what you do we throw all sorts of permissions and responsibilies at you | 21:34 | |
| cotto | The biggest qualification for being a cage cleaner is having a patch that you want to get applied. | 21:41 | |
| also, an Internet connection helps | |||
| s1n_yapc | cotto: a computer is a prereq for the internet connection though | 21:42 | |
| cotto | touche | 21:43 | |
| seen allison | |||
| purl | allison was last seen on #parrot 4 days, 1 hours, 3 minutes and 46 seconds ago, saying: 's just temporary [Jun 16 20:35:44 2009] | ||
|
22:12
magnachef joined
22:17
cotto joined
22:18
tmoertel joined
22:33
rg1 joined
22:42
ZeroForce joined
23:14
burmas joined
23:20
donaldh joined
23:43
MoC joined
|
|||