Parrot 1.3.0 "Andean Swift" released | parrot.org
Set by moderator on 23 June 2009.
00:14 MoC joined
cotto bacek_at_work, when do you think the key branch will be ready to merge into trunk? 00:21
Whiteknight is looking forward to that too 00:24
nopaste? 00:25
purl nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/
clunker9_ pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
chromatic tools/dev/nopaste.pl 00:26
Whiteknight these rakudo spectest failures are both remarkably similar 00:28
nopaste "whiteknight" at 69.248.162.161 pasted "backtraces for two rakudo spectest failures, called from ../../parrot perl6.pbc" (228 lines) at nopaste.snit.ch/17216 00:29
Whiteknight damnit, nopasted it to the wrong channel
same failures and almost identical backtraces when calling from the fakecutable 00:30
chromatic Do you get them while running the PBC with the --leak-check option? 00:32
Sorry, --leak-test.
Whiteknight no, haven't tried that option yet
same backtrace too when using -G, so no difference there
and same exact backtrace with --leak-test 00:33
what is the "t" in the NCI signature? 00:35
00:36 patspam joined
chromatic Raw string? 00:36
Whiteknight okay, that makes some sense
I'm trying to figure out why this is calling into IMCC from NCI. is that how the PASM compreg works? 00:37
or the PIR one?
chromatic I believe so. 00:39
Whiteknight man, this trace is rediculous 00:40
i dont even know where to start with it
01:01 allison joined
Whiteknight Okay, the constant pointed to in Parrot_init_arg_op is actually a string but is being treated as a PMC 01:03
chromatic Definitely a problem.
cotto maybe it's a stealth PMC 01:05
01:05 Andy joined
Whiteknight ctx->constants[*pc]->u.string is a valid string, while ctx->constants[*pc]->u.key is not a valid PMC 01:05
the string is "Perl6Scalar"
dalek rrot: r39983 | jkeenan++ | branches/darwin2hints/t/steps/init/hints/darwin-01.t:
Add more tests for subs internal to init::hints::darwin.
01:08
Whiteknight (gdb) p * ctx->constants[*pc]->u.string
$5 = {cache = {_b = {_bufstart = 0x1b4c390, _buflen = 16}, _ptrs = {_struct_val = 0x1b4c390, _pmc_val = 0x10}, _i = {_int_val = 28623760, _int_val2 = 16},
_num_val = 1.4142016470804839e-316, _string_val = 0x1b4c390}, flags = 463104, strstart = 0x1b4c390 "Perl6Scalar", bufused = 11, strlen = 11,
hashval = 0, encoding = 0x13b69e0, charset = 0x13b6d30}
(gdb) p * ctx->constants[*pc]
$4 = {type = 115, u = {integer = 140266244385480, number = 6.9300732622038298e-310, string = 0x7f9247abaac8, key = 0x7f9247abaac8}}
what does that type number correspond to? is that some kind of flag to determine the type, or someting more nefarious? 01:09
chromatic Looks like a Rakudo type. 01:11
dalek rtcl: r523 | coke++ | branches/convert_tcllist (50 files):
Merged /trunk:r499-522
01:14
rrot: r39984 | jkeenan++ | branches/darwin2hints/t/steps/init/hints/darwin-01.t:
Fine-tune tests, e.g., make sure is always usable at end of blocks.
Whiteknight okay, somewhere along the line the FixedIntegerArray for the sub signature isn't getting passed, or not passed correctly 01:15
so the constants pointer is off, and is pointing to the wrong arguments in the packfile
chromatic That could do it. 01:16
Is it getting collected?
What if you pmc_register all FIAs. 01:17
Punctuation FAIL.
dalek rrot: r39985 | jkeenan++ | branches/darwin2hints/t/steps/init/hints/darwin-01.t:
Correct bad commenting out of skip all conditions.
01:18
Whiteknight I was getting the same failure with -G 01:19
so I don'think it's a collection issue
allison Whiteknight: well, the thing is, not all subroutine calls use the fixed integer array constant 01:20
Whiteknight in this case, the test is failing at ASSERT_SIG_PMC, which does pmc->vtable->base_type == enum_class_FixedIntegerArray 01:21
so I don't know if it always happens, but Parrot wants it to happen here
allison Whiteknight: it means that some piece of code isn't catching the case of PCC argument passing 01:23
Whiteknight: (because their argument signature is passed in interp->args_signature instead of a key constant) 01:24
Whiteknight okay, that's good information to have!
(i can also verify that a FIA constant is nowhere in the vicinity of this constant, so it's not an off-by-one kind of error
I checked up to off-by-6 before I got tired of that approach :) 01:25
allison: at that point, interp->args_signature is NULL
so that's a double-bad
chromatic Sounds like it shouldn't even be in this code at all. 01:26
01:27 jimk joined
Whiteknight okay, so we have a function being called with no signature passed anywhere. 01:27
or, nowhere that anybody can find it
allison Whiteknight: how about interp->current_args? 01:30
Whiteknight also NULL
nopaste "Whiteknight" at 69.248.162.161 pasted "interpreter structure for allison++" (12 lines) at nopaste.snit.ch/17219 01:32
chromatic Bad interpreter?
Whiteknight maybe 01:33
allison Whiteknight: CONTEXT(interp)->results_signature?
chromatic dynamic_env = 0x14b7590, lo_var_ptr = 0x7fff547cda78, parent_interpreter = 0x0 ? 01:34
64-bit system?
01:35 kid51 joined 01:36 darbelo left
allison the interpreter struct looks relatively sane 01:36
chromatic Look at the address differences between lo_var_ptr and dynamic_env though. 01:37
Whiteknight CONTEXT(interp)->results_signature = NULL
yes, it's a 64-bit system
chromatic: is dynamic_env created on the system stack? There is a pretty big gap between my system's stack and it's heap 01:38
those kinds of numbers are normal here 01:39
chromatic That could be it then.
allison Whiteknight: okay, well all of the checks that stop a function call from going all the way into Parrot_init_arg_op check one of those alternative locations
Whiteknight so all of those alternative locations (why are there so many?) are NULL and no FIA is in the constants pool, so something is definitely borked 01:40
and I don't feel like I can meaningfully trace into IMCC's parser to figure out why not
allison Whiteknight: there are so many because we have too many calling conventions and each passes args differently 01:42
I dropped in part way through the debugging session... this is Rakudo code, and you can't pin down the problem section of code? 01:43
Whiteknight these are the current rakudo spectest failures 01:45
nopaste.snit.ch/17216 01:46
check out that remarkably attractive backtrace
makes me weep with joy
chromatic Is it trying to run code compiled in an external runloop? 01:47
Whiteknight i dont know
01:47 |Ryan52 joined
allison ah, excellent, Parrot_runops_from_c_args tells you that this isn't an ordinary call from an op, so it shouldn't be using the key constant for the signature 01:49
Whiteknight okay, what should it be using? 01:50
(I really feel like I should know all this by now)
allison it's using the third option, which is passing the args around as a C varargs datastructure 01:52
(And really, not grokking this is probably more of an honor than anything else, it really shouldn't work this way) 01:53
Whiteknight but I've done enough poking and hacking in this area that I really should understand how it works by now 01:54
allison but that code path shouldn't wind up in Parrot_init_arg_op
Whiteknight okay, that's very good to know 01:55
actually, I'm looking through the code now and it doesn't appear that there is any other path for the code to take 01:56
allison Whiteknight: ah, it's the return rather than the call 01:57
Whiteknight Parrot_runops_fromc_args calls set_retval, which calls set_retval_util, which always calls Parrot_init_arg_op
yes, sorry 01:58
allison Whiteknight: so the call does go on to runops_args, and appropriately avoids Parrot_init_arg_op
then it comes back and calls set_retval
and that's where the mess comes in 01:59
Whiteknight right
Whiteknight grumbles menacingly about the quality of the whole PCC system 02:00
chromatic You can use the word "quality" in that sentence?
allison Whiteknight: oh, this code is much, much older than PCC
Whiteknight grumbles menacingly about the of the whole PCC system
great, it's a timecapsule of legacy garbage 02:01
chromatic Giants walked the earth then, gods among men.
allison PCC did its best to work around the trembling bowels of this code
Whiteknight all I really want for christmas is pcc_rewiring :) 02:02
cotto pcc_rewiring doesn't appear to be galloping in on a white horse to save us
chromatic I want a hovercraft.
allison okay, for set_retval to do anything other than return NULL, the return signature must be either S or P
Whiteknight i would settle for a hovercraft
the return signature according to the NCI thunk is P_Jt
allison pcc_rewiring is patiently and stubbornly crawling its way across the desert to save us ;) 02:03
02:03 Ryan52 joined
chromatic And we only see this in Rakudo because nothing else uses eval quite like this yet. 02:03
Whiteknight yeah, more aggressive eval tests are definitely needed
allison ah, the backtrace says 'P' 02:04
Whiteknight yeah
chromatic Very easy to see why memory layout changes this.
allison so we've got a subroutine call that takes a PMC return value, if that helps at all in identifying it 02:05
Whiteknight so who is supposed to be assembling this signature, is it NCI in the caller, or is it the callee?
once we know when the signature is supposed to be set, we can focus in and see why it isn't
or, why it's getting unset 02:06
allison the subroutine should be setting it
this is the return signature, and the call from C is trying to extract the return values from the PIR sub 02:07
Whiteknight right 02:08
allison hmmm... we can probably do one better, since we have what looks like the string of the eval'd sub there in the back trace, and it shows itself as "_block329"
Whiteknight I have that PIR code handy. let me nopaste it 02:09
nopaste "whiteknight" at 69.248.162.161 pasted "PIR code for allison++ and chromatic++" (76 lines) at nopaste.snit.ch/17220
Whiteknight There are two :load subs there, which would be getting executed in Packfile_fixup_subs 02:10
02:10 amuck joined
Whiteknight I don't know which one is breaking this 02:10
although both are creating P6 metaclasses
chromatic Neither, as far as I can see.
Whiteknight actually now that I think about it, if Packfile_fixup_subs is only executing the :load subs as it claims, then neither should have a return value 02:11
:load subs don't return anything, right? so it's nonsensical to be extracting a return value from one 02:12
chromatic Exactly.
allison looks like that's a different chunk of eval'd code than the one that appears in the back trace
Whiteknight the plot thickens!
purl Hmmm... needs more cornstarch.
Whiteknight is it? I may be looking at one from the wrong test failure 02:13
allison that one is looking at "t/spec/S14-roles/basic.rakudo"
Whiteknight oh no, that nopaste I showed you had two backtraces
02:13 TiMBuS joined
Whiteknight one for each failed test (they're remarkably similar) 02:13
allison while the backtrace is looking at t/spec/S12-attribute..
(it truncates the string at that point)
Whiteknight right 02:14
I can get the other PIR segment if you want
allison good to be sure 02:15
if the subs are similar, the one for the S14 test is returning a PMC
Whiteknight that PIR snippet was from S14 02:16
allison aye, so I'm curious if the one from S12 that appears in the stack trace is doing the same 02:18
nopaste "Whiteknight" at 69.248.162.161 pasted "other PIR program for allison++" (74 lines) at nopaste.snit.ch/17221
allison it seems likely
dalek rrot: r39986 | petdance++ | trunk (2 files):
fixed splint annotations for a bunch of functions
02:19
Whiteknight yeah, this time there's a single :load that's creating a metaclass
I still don't understand how a :load function can be returning a value, that makes no sense to me 02:21
allison this generated code is daft, it creates a const for the same sub twice, then invokes it
Whiteknight oh wow, I hadn't noticed that before 02:22
allison patrick talked to me a bit about return values from :load, I forget what he wanted them for
Whiteknight pmichaud: ping 02:23
do we currently support them, or is that a wishlist item?
allison mmm... it looks like he wants them so he can have a copy of the :load subroutine available to invoke in cases where :load isn't ordinarily invoked 02:24
Whiteknight src/packfile.c:778 the return value is being ignored and not stored anywhere
allison so, this anonymous eval'd code is returning a PMC sub that is the :load subroutine for the 'B0rk' namespace 02:25
Whiteknight ah, okay. I see what he wants now
Okay, so Packfile_fixup_subs (which is poorly named) should just be executing the :load function, right? 02:27
chromatic Yes.
It does :load and :init. 02:28
allison does either root_new or get_hll_global do a Parrot_runops_fromc_args
Whiteknight and a :load function doesn't really have a signature, because they don't take arguments and don't meaningfully return values at this point
allison: I don't think so
allison oh, I remember
Whiteknight so Parrot should recognize that this is a :load situation and not look for a signature in the first place 02:29
allison he needed a special way to get the :load sub because :load isn't invoked from an eval'd block of code
Whiteknight it isn't?
oh wait, no it wouldn't be
okay, that makes more sense then
allison no, only when the loaded by load_bytecode
Whiteknight right right
allison instead, it invokes the first sub it finds in the eval block
which is our dreaded _block329, 02:30
which returns a PMC
Whiteknight okay, that makes more sense to me then
but that doesn't explain why _block329 is getting executed from within Parrot_fixup_subs
allison go one step back 02:31
02:31 bacek joined
Whiteknight ../ 02:31
allison it's being executed from imcc_compile
Whiteknight and that means...? 02:32
does that PBC_MAIN flag change the behavior?
allison it's an "action" 02:34
02:35 janus joined
allison it essentially says to treat it as a :main sub 02:35
bacek cotto: ping? 02:36
dalek rrot: r39987 | bacek++ | branches/ops_pct/compilers/opsc/op/op.pir:
[opsc] Remove useless Op.new.
rrot: r39988 | bacek++ | branches/ops_pct (3 files):
[opsc] Rename dir op to ops
Whiteknight ah yes, it does. So PackFile_fixup_subs executes :load, :init, :main, :immediate, and :postcomp
(depending on the action)
allison yes 02:38
02:39 jimmy joined
cotto bacek, pong? 02:39
dalek rrot: r39989 | bacek++ | branches/ops_pct/compilers/opsc/opsc.pir:
[opsc] Rename die to exit.
rrot: r39990 | bacek++ | branches/ops_pct (5 files):
[opsc] Add skeleton for Ops::OpLib
rrot: r39991 | bacek++ | branches/ops_pct/compilers/opsc/t/04-oplib_BUILD.t:
Add tests for OpLib::BUILD
bacek cotto: key_revamp branch is almost ready to merge.
allison Whiteknight: what you really want is some debug prints in the PIR code to see what it's doing 02:40
cotto nice
bacek++
bacek And I did quite few changes in ops_pct :)
only one problem with key_revamp - Rakudo epicly fail because of "GC"...
cotto bacek, I was going to rename oplib to runcore, since that's a little more indicative of what the code does.
allison Whiteknight: is it successful at fetching the class's :load function? 02:41
Whiteknight i have no idea
allison Whiteknight: because it looks like the failure happens when it attempts to return the PMC object for that :load function 02:42
bacek cotto: no-no. OpLib is runcore independent. Parsing/sorting/etc
afk # kids time
allison Whiteknight: (but that the rest of the subroutine runs fine) 02:43
Whiteknight: hard to be sure without the debug info, though 02:44
cotto kids++
02:46 |Ryan52 joined
Whiteknight okay, I'll try to rerun this thing with debugging stuff tomorrow,but it's getting late now 02:47
allison Whiteknight: yup 02:49
cotto bacek (when you get back), so you're thinking that the PCT stuff will give us a past, the OpLib stuff will do the runcore-independent stuff and runcore/foo.pm will be runcore-specific?
allison Whiteknight: good progress on tracking it down, well done
cotto just making sure we're in sync
Whiteknight thanks for the help allison++. I would have been banging my head fruitlessly all night without it
dalek rrot: r39992 | whiteknight++ | trunk/src/packfile.c:
[packfile] add some extra documentation here explaining what executes when
Whiteknight and then I would need ibuprofen 02:50
cotto but not 'N Sync
because that wouldn't be good for anybody
Whiteknight goodnight
allison Whiteknight: night
bacek cotto: (back for 30 seconds) exactly 02:54
02:55 zak_ joined
Coke . 03:20
Tene ! 03:21
TimToady ?
Tene , 03:22
Infinoid ; 03:36
cotto : 03:39
bacek % 03:41
o_O
03:52 amuck joined 04:08 Andy joined
Andy back 04:11
dalek rtcl: r524 | coke++ | trunk (12 files):
Merge back branches/convert_tcllist -
04:12
rtcl: r525 | coke++ | branches/convert_tcllist:
This branch has been merged back to trunk.
04:17
04:30 eternaleye joined
dalek rtcl: r526 | coke++ | branches/tclstring (11 files):
merge from trunk:509-525
04:51
04:53 sekimura joined
cotto snoring cat? 05:06
YouTube or it didn't happen
Coke No thanks, I've already got one.
even better, Snoring 3-legged cat. 05:07
cotto nm. There are some there already.
brbrooks anybody here dabble in OCaml? 05:10
dalek rrot: r39993 | allison++ | trunk/config/gen/config_pm/config_lib_pasm.in:
[install] Add an 'installed' flag to the two versions of the frozen

decisions. Part of fix for TT #495.
05:17
05:22 amuck joined
dalek rrot: r39994 | petdance++ | trunk/include/parrot/interpreter.h:
Splint complains about PMCNULL's storage, so don't use it.
05:47
rrot: r39995 | allison++ | trunk/tools/dev/pbc_to_exe.pir:
[install] Modify pbc_to_exe so it uses the configured values for the

working with an installed parrot_config. Fixes the original bug report for TT #495, but does not fix some build directory library paths also in pbc_to_exe. These will also need to be fixed.
05:57
06:44 jq left 06:54 iblechbot joined 07:12 mberends joined
dalek rrot: r39996 | fperrad++ | trunk (2 files):
[config] refactor MSVC SAL
07:30
TT #824 closed by fperrad++: [CAGE] refactor MSVC SAL with Configure 07:33
NotFound 39996 generates lots of warnings: warning: "PARROT_HAS_SAL" is not defined 08:26
cotto Heh. OpsFile.pm around r15000 had the same formatting I recently changed back to. 08:28
dalek TT #824 reopened by NotFound++: [CAGE] refactor MSVC SAL with Configure 08:34
cotto Better late than never... 08:36
dalek rrot: r39997 | cotto++ | trunk/lib/Parrot/Op.pm:
[ops2c] revert r656, which apparently hasn't come in handy since then
08:37
NotFound 656? :o 08:38
cotto yes
It took a bit of digging to find out why it was added in the first place.
NotFound Archeology, or paleontology? 08:39
cotto OpsFile.pm is surprisingly similar to its ancestor from circa r5000. 08:40
It's definitely time for bed. Good night. 08:43
dalek rrot: r39998 | fperrad++ | trunk/include/parrot/compiler.h:
fix r39996
08:50
mikehh 2 to go to r40000 - that is a lot of commits 08:55
how long ago was r656? 08:56
well All tests PASS (pre/post config, smolder, fulltest) at r39996 - Ubuntu 9.04 amd64 08:58
let me svn up and try again
chromatic r656 | gregor | 2001-12-31 09:14:10 -0800 (Mon, 31 Dec 2001) | 3 lines 08:59
NotFound warnings fixed by r39998 09:02
I hope that the release counter is not 16 bit X-) 09:05
mikehh All tests PASS (pre/post config, smolder, fulltest) at r39998 - Ubuntu 9.04 amd64 09:27
dalek TT #824 closed by rblasch++: [CAGE] refactor MSVC SAL with Configure 09:31
10:28 david joined
david Hi - why does 'method getGlobalTransactionId( --> Array of Int ) { ... } ' (within a role) - warn of 'Use of type object as value'? 10:29
10:53 masak joined
dalek rrot: r39999 | fperrad++ | trunk/config/gen/platform/win32/threads.h:
[win32] puts #undef close to #include
10:58
10:59 mokurai left
dalek rrot: r40000 | fperrad++ | trunk/t/configure/049-options_test_prepare.t:
[t] fix on win32
11:01
11:04 Whiteknight joined
mikehh well we have now got to r40000 11:19
11:31 david left
mikehh All tests PASS (pre/post config, smolder, fulltest) at r40000 - Ubuntu 9.04 amd64 11:54
12:09 MoC joined
Whiteknight parrot++ 12:16
12:16 kid51 joined
Whiteknight good morning kid51 12:29
irclogs? 12:31
purl irclogs is, like, irclog.perlgeek.de/parrot/today or see also: infrared clogs
kid51 good morning Whiteknight
How's your head this morning?
Do you have a lump from banging it against code all night? 12:32
Did you take ibuprofen?
Whiteknight haha, no lumps and no ibuprofen. I managed to go to bed before doing any bodily harm 12:34
dalek rrot: r40001 | jkeenan++ | trunk/t/configure/049-options_test_prepare.t:
Delete some commented-out code.
12:41
rrot: r40002 | jkeenan++ | branches/darwin2hints/t/configure/049-options_test_prepare.t:
Delete some commented-out code.
Infinoid Whiteknight: ping 12:49
Whiteknight Infinoid: pong 12:50
Infinoid hi :)
Whiteknight good morning!
purl And good moroning to you, Whiteknight.
Whiteknight and you purl! 12:51
Infinoid I'm fixing the PipeHandle PMC, it needs to wait() for the child, not close() it
Whiteknight oh, okay
Infinoid but first, I had a question. Is it really appropriate to use a piohandle variable for pids? Will it break anywhere?
Whiteknight I don't think so, no
Infinoid it's an integer on unix and a pointer on win32, and that's the right thing in both cases? 12:52
(I'm really uninformed about the details of win32)
Infinoid adds a Parrot_io_wait_child() 12:54
Whiteknight on win32 it's a HANDLE, which I believe is an integral type
Infinoid hmm, ok 12:55
INTVAL procid = VTABLE_get_integer_keyed_int(interp, filehandle, 0);
HANDLE process = (HANDLE) procid;
WaitForSingleObject(process, INFINITE);
so that means I should add a PIOCHILDHANDLE or somesuch? 12:56
hrm. time to fire up the winxp box and take a look at its headers 12:57
parrot ends up just casting PIOHANDLE to void* on win32
Whiteknight does it? I thought it was casting PIOHANDLE to HANDL 13:02
HANDLE
Infinoid typedef void* Parrot_WIN32_HANDLE;
typedef Parrot_WIN32_HANDLE PIOHANDLE;
strawberry perl's winnt.h typedefs HANDLE to void* as well, so I guess it's safe 13:03
anyway, win32 uses the same data type (HANDLE) for its pids and its io, and unix uses the same data type (int) for its pids and its io, so I think it should be fine to use PIOHANDLE for pids too 13:04
I'll add a comment to the child attr to remind me so I won't get confused about this again later :) 13:05
Whiteknight okay 13:10
(I dont know why I thought it was an integer type)
Infinoid I think SOCKET might be an integer type 13:11
it is. oh, and it's unsigned, just to make life more interesting 13:12
Whiteknight w00t 13:14
13:24 Austin joined 13:25 Austin left, Austin joined 13:28 bacek joined
Infinoid gets confused by msdn 13:35
on unix, we call waitpid() to clean up a child process. on win32, we're calling WaitForSingleObject() and CloseHandle() instead, but to me those look more like select() and close() 13:40
it's not clear to me that they are the correct things to call, and I'm failing to find out how to get the child process's return value
Whiteknight hmmm 13:41
msdn is TEH SUXXOR, that's for sure
Infinoid ah, there's an GetExitCodeProcess() 13:43
13:43 Austin_ joined
Infinoid which can fail, if the process is still running. apparently I'm supposed to call that after the process exits but before the HANDLE is freed up? If it ever is 13:43
NotFound: help! 13:44
Whiteknight yeah, in win32 you just take what you want, convert it to camel case, and it's probably a function
DoThatThingWhereWeRunAProcessAndGetItsReturnValueAsAnInteger()
Infinoid oh, and it looks like I can kill a process with TerminateProcess(), specifying the return value that *I* want the process to return 13:45
that's just brilliant.
Whiteknight RunItAndWaitForItToDoWhateverItWantsToDoUntilItReturns()
Infinoid imagines an inexplicable RunItAndWaitForItToDoWhateverItWantsToDoUntilItReturnsNonblocking() variant 13:46
Infinoid thinks he likes chromatic's NSPushCandyColoredButton() more 13:47
Austin Have you tried this? msdn.microsoft.com/en-us/library/ms...S.85).aspx 13:51
Infinoid Yep. Note that return value handling isn't mentioned anywhere on that page 13:52
Austin (Note in particular the wait-for-single-object call...)
Infinoid yeah. WaitForSingleObject looks more like select() than wait() to me 13:53
it's also used for open file handles and mutexes 13:54
13:54 bacek joined
Infinoid and it doesn't give me a way to get the process's return value... 13:54
so I think the idea is, we wait for the process handle, then get its return value, and then close the handle 13:56
Infinoid is in the middle of trying that.
Austin Right. You'd wait for the process handle to change status (meaning it exited, 'cause that's all it can do) and then call GetExitCodeProcess on the handle.
Infinoid cool. thanks for confirming
Austin seen pmichaud? 14:03
purl pmichaud was last seen on #parrot 16 hours, 50 minutes and 50 seconds ago, saying: (the Rakudo failures all deal with Roles.)
Austin Must be time for him to reappear.
Anyone know what the rules are for PIR-level named parameters being fed into positionals? 14:04
Whiteknight: Do I remember correctly that you were cursing chatZilla a while back? 14:06
(Or what that someone else?)
Whiteknight I like chatzilla, mostly 14:07
Austin Okay.
I'm trying it now. I wondered if there were any insurmountable annoyances
bacek Hah! I found "GC" error! 14:09
bacek dancing around
nopaste "bacek" at 114.73.4.125 pasted "Very special assert in hash.c" (24 lines) at nopaste.snit.ch/17222 14:10
bacek (In nopaste) I check that we never put non-constant key into constant PMC Hash. 14:12
And it failing.
Any volunteers to prove that I'm totally wrong?
Whiteknight wow 14:13
nopaste "bacek" at 114.73.4.125 pasted "bt from hash.c assertion." (27 lines) at nopaste.snit.ch/17223
Austin Here's me not knowing anything about the GC, but why shouldn't you put a non-constant string into the hash?
bacek we shouldn't put non-constant string into constant hash 14:14
"constant" if Parrot's meaning of "constant"
Austin Okay. What's a constant hash?
bacek s/uf/in/
From constant pool
Austin Because the GC doesn't search the constant pool? 14:15
<rewind> What is a constant, in Parrot's usage?
bacek Austin: yes, afaiu
14:16 elmex joined
dalek ose: r73 | Austin++ | trunk/ (4 files):
Got named parameters working from arg-expr side
14:17
Austin You know, it's surprising how quickly my grammar has become polluted with nasty little hacks. 14:18
Larry++
bacek Whiteknight: can you confirm that GC doesn't mark constant pool? 14:24
(Or say that I just have to go to bed at 12:30AM...)
Austin It's 5:00 somewhere, Bacek. 14:27
bacek Austin: I don't believe you. Half-hour timezone can exist only on Australia. 14:28
clock? 14:29
purl bacek: LAX: Sat 7:29am PDT / CHI: Sat 9:29am CDT / NYC: Sat 10:29am EDT / LON: Sat 3:29pm BST / BER: Sat 4:29pm CEST / IND: Sat 7:59pm IST / TOK: Sat 11:29pm JST / SYD: Sun 12:29am EST /
bacek Something like Easter Island should be in 5.00AM atm. 14:30
14:33 skids joined
Austin Venezuela and Newfoundland, Canada, both use 30-minute offsets. 14:34
Arizona used to, but stopped a while back. 14:35
bacek "Blame the Canada!" :) 14:37
bacek used to live in Russia with ~10 timezones across the country 14:38
Austin sings, "Blame Canada!"
Austin sings, "Should we blame the government, or blame society? Or should be blame the images on TV?" 14:40
Bacek, your watch was never broken. It was just in the wrong place. :) 14:41
NotFound Infinoid: pong
Infinoid NotFound: Hi, was hoping for a little help with I/O on win32
bacek Austin: :) 14:42
Infinoid NotFound: You added some code to the pipe close stuff, to WaitForSingleObject() the child process HANDLE, and then CloseHandle() it. Is it sane to put a GetExitCodeProcess() inbetween those two?
NotFound Infinoid: I can start my laptop with xp home in a minute
Infinoid No hurry, I am trying to get this patch to work on unix first :) 14:43
NotFound Infinoid: yes, you can use the process handle as long as you haven't yet closed it
Infinoid getting it to work on win32 will require going to the win32 machine in the living room, which also implies getting out of bed, so I am carefully ordering my priorities 14:44
ok, thanks
dalek tracwiki: v28 | bacek++ | ParrotQuotes 14:48
tracwiki: Priorities ftw!
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
Whiteknight bacek: GC marks constant pool to find non-constant children. It does not sweep constant pool 14:49
bacek So, I'm wrong :/ 14:50
Whiteknight i might be wrong about that 14:52
Infinoid is pushing readline() and readline_interactive() down into the base Handle class 14:54
bacek sigh...
dalek tracwiki: v29 | bacek++ | ParrotQuotes 14:55
tracwiki: Split long line
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
Coke hey, smolder is green. 14:59
even solaris and amd64 15:00
NotFound plays Greensleeves 15:01
bacek smolder is green, nose is red... Is is Christmas already?
Austin Yeah, we replaced main.c with "hello, world."
Infinoid and a call to emit_magic_pony() 15:02
NotFound Austin: I'm sure that if we do that someone will put "void main ..." in order to have some warning X-)
Infinoid If your OS doesn't supply a emit_magic_pony() function, parrot doesn't support your platform (yet).
Austin :) 15:03
bacek s/yet/and will never support/ :)
NotFound patch -p0 < fairy_dust.patch
bacek Previously patch applied. Apply anyway? 15:04
Austin Soy based. Biodegradable. 15:05
www.youtube.com/watch?v=3nbEeU2dRBg
NotFound while true ; do yes | patch -p0 < fairy_dust.patch ; done
MMmmm... some problem with multiple stdin X-) 15:07
Austin for patch in /dev/fairy* ; do dd if=$patch of=/tmp/patch ; yes | patch -p0 < /tmp/patch ; done
15:10 Limbic_Region joined
bacek Austin: why so complicated? Just use cat! 15:10
NotFound bacek: curiosity kill them
bacek (Hope it will not eat parrot)
Are you sure about "curiosity"? I suspect GC kill them. 15:12
Austin Make it a const curiosity. 15:13
NotFound GC stand for Great Curiosity, isn't it?
Infinoid <gc> im in ur pools, sweeping ur cats
bacek ROTFL
Austin I have a GC question: what if it didn't do anything?
Infinoid Austin: when? how? why? 15:14
NotFound Austin: I think that is called the Infinity Memory Model.
bacek Than nothing bad will happen
Austin NotFound: Exactly.
How much memory does parrot really need?
bacek (If you have petabytes of memory)
NotFound Austin: do you suggest to use an Infinity Memory as a pluggable GC module? 15:15
Austin Sure.
NotFound Not a bad idea.
Austin It's fast, and it doesn't core dump.
bacek it's already there. Just pass -G to ./parrot
Austin Is it? 15:16
purl it's it!
NotFound bacek: Is it? Or is implemented as some flag and lots of if?
bacek -G just disable GC at all. So it equivalent to Infinite Memory afaiu 15:17
Austin I think the only thing that IMM needs is to print out the total consumption at the end.
bacek -G --leak-test
(Or valgrind ... -G) 15:18
NotFound bacek: but making it pluggable will be a fast way to implement and test the pluggability of the GC subsystem.
bacek NotFound: agreed. Looks like pluggable GC on Whiteknight's todo list 15:19
NotFound Yeah, just a way to test it without testing a new GC at the same time. 15:20
Austin Ooh. Cheap business cards, only 1 cent each. 15:23
I <3 spam.
bacek Austin: want to enlarge something? :) 15:24
Austin Sure. I think I need more memory.
bacek passing old good ferrite memory to Austing 15:25
At least it's big! 15:26
bacek must sleep...
purl $bacek->sleep(8 * 3600);
bacek see you tomo^W sometime 15:27
NotFound We can innovate and implement a NaN memory model.
Austin What's that, NotFound? 15:28
NotFound Austin: If I know in advance what is, will not be innovative. 15:29
Austin Ahh. Good point.
dalek TT #827 created by coke++: command line arg to specify maximum memory allocation 15:30
NotFound I think there was an RT ticket about that. 15:35
Coke NotFound: I probably opened that one too!
NotFound Coke: ping
Good synch ;) 15:36
Coke my web is horrifically slow atm.
15:42 davidfetter joined
NotFound I can't find it. 15:45
pmichaud Good morning, #parrot 16:04
allison good morning, pmichaud 16:05
16:06 Psyche^ joined
davidfetter afternoon, all 16:08
kid51 is back from breakfast 16:16
16:19 chromatic joined
Infinoid ends up moving most of FileHandle's methods down into Handle 16:20
16:30 davidius joined
mikehh pmichaud: hi - I did another report on rakudo spectests - should I paste it 16:30
for you that is
pmichaud: I only get the Segmentation fault if I build against an optimized parrot 16:33
pmichaud: otherwise it fails with a backtrace against a non-optimized parrot 16:34
pmichaud mikehh: yes, please paste 16:35
nopaste "mikehh" at 90.209.117.228 pasted "rakudo spectest failures at at parrot r40000" (160 lines) at nopaste.snit.ch/17224 16:38
chromatic That's the problem Whiteknight and allison were debugging yesterday. 16:40
nopaste "mikehh" at 90.209.117.228 pasted "fixes for spectest failures - not a PATCH - just commentry as I think it only applies to amd64" (97 lines) at nopaste.snit.ch/17225
mikehh damn - I missed the first couple of lines - just explanation - not important 16:42
pmichaud mikehh: I think it applies to x86, also.
I think the error occurs whenever we have an eval that throws an exception.
the interesting thing to try would be to just do the last 4 tests 16:43
mikehh anyway I got both failing tests to work
NotFound Then it can be related to my "throw from C-catch from pir" patch.
chromatic It did seem to start around that time; pmichaud bisected it there. 16:44
Hm, what if it resumes to a place that expects a return value from PIR?
dalek rrot: r40003 | jkeenan++ | branches/darwin2hints (20 files):
Move detection of Fink and Macports libraries from config steps to Darwin

that formerly used _handle_darwin_for_fink() or _handle_darwin_for_macports. Add two configuration options: darwin_no_fink, darwin_no_macports.
mikehh it was just the last test in t/spec/S14-roles/basic.t which is ok if I just SKIP the last TODO test 16:45
NotFound As it is implmented now, and before the patch, exceptions thown from C can't be resumed.
Coke msg kid51 - why are you adding options to avoid using fink and darwin?
purl Message for kid51 stored.
chromatic I mean "resumes PIR execution" not "It's a resumable exception"... but I can't imagine how that would work. 16:46
bacek_at_work, the GC does mark constants... once. It never sweeps them. Sweeping them also has the effect of clearing their liveness flags. During mark, the GC figures that if that flag is true, it's already marked this thing in this run, so it skips marking it again. Thus constant PObjs which point to non-constant PObjs will only mark the kids once. 16:50
pmichaud Does this mean that constant PObjs can never refer to non-constant PObjs ? 16:57
chromatic Right. 16:59
pmichaud okay, what are some examples of constant PObjs, then?
I think this may be a major problem for Rakudo.
chromatic Sub
Class
pmichaud ....surely that can't be right in the case of Sub, though (more) 17:00
17:00 mokurai joined
pmichaud we have all sorts of non-constant things that get attached to Sub 17:01
chromatic Try this patch then.
pmichaud more precisely, I should say "Parrot has all sorts of non-constant things ..." 17:02
nopaste "chromatic" at 72.90.115.31 pasted "Always Mark Constant PObjs -- pmichaud" (13 lines) at nopaste.snit.ch/17226 17:06
chromatic afk
pmichaud I guess I'm saying that if the non-constant PObjs aren't being marked, I'm surprised we aren't seeing a lot more GC faults. 17:09
NotFound pmichaud: In this and similar things, take into account that we have lots of workarounds and TODO'ed things. 17:10
Ans skipped 17:11
pmichaud That's fine, I'm just saying there are parts of Parrot's existing implementation (lexicals and contexts) that really depend on the notion that they're attached to Subs 17:12
i.e., that the Sub will keep them alive
NotFound The Sub or the Continuation?
pmichaud the Sub
nopaste "pmichaud" at 72.181.176.220 pasted "a minimized case to get "abort on exit"" (5 lines) at nopaste.snit.ch/17227 17:23
17:25 pjcj joined
chromatic Did that patch help anything? 17:29
pmichaud well, I don't have anything failing at the moment for it to help.
unless we think it'll resolve the abort-on-exit messages 17:30
chromatic I don't think it will.
pmichaud right
I think my point is that a lot of stuff in Parrot seems to depend on the ability to put non-constant things on Subs, so I'm a little surprised we aren't seeing more issues than we are 17:31
s/lot of stuff/some key things/ 17:32
17:54 Khisanth joined
mikehh pmichaud: I set up a test of the last 4 in t/spec/S12-attributes/class.t it fails with backtrace, but if I skip the last it passes 17:58
pmic haud: then I re-did the test t/spec/S12-attributes/class.t just skipping the last test and it now passes
sorry 17:59
pmichaud I think the problem arises when there are two failing evals containing class definitions
mikehh pmichaud: then I re-did the test t/spec/S12-attributes/class.t just skipping the last test and it now passes
pmichaud (or other code that has an "execute on load" block)
the nopaste I gave above (nopaste.snit.ch/17227) seems to be a minimal test case 18:00
mikehh I what happens if you just do the last 18:02
ok - you need both 18:06
gotta go to the store - bbl 18:12
kid51 Coke ping 18:50
msg Coke Adding options because I can see that users might want to avoid using those libraries, specifically, the increasingly unmaintained Fink distributions. 18:51
purl Message for coke stored.
brbrooks what's with this purl messaging system? purl says i have 1 message wating 18:53
18:53 eternaleye joined
kid51 Then in purl window, type: messages 18:54
Then, after done: messages erase
Yet another communications system you have to keep up with to be one of the cool kids ;-) 18:55
brbrooks mmm
kid51 Mainly for messages for someone who is temporarily off channel, IMO 18:56
dalek rrot: r40004 | jkeenan++ | branches/darwin2hints/lib/Parrot/Configure/Step/Methods.pm:
Eliminate an internal sub which is no longer used.
19:02
19:08 fdorothy joined 19:29 HG` joined 19:37 eternaleye joined 20:16 szabgab joined
cotto messages help 20:22
purl To leave a message, say in channel or privmsg purl "msg <nickname> MESSAGE FOR J00". To read your messages, privmsg purl "messages". To erase your messages, privmsg purl "messages erase". or Delivery Not Guaranteed!
cotto brbrooks, ^
20:25 iblechbot joined
Austin brbrooks: figure it out, yet? 20:28
20:56 kid51 joined
brbrooks yep 21:16
21:21 eternaleye joined 21:29 eternaleye joined 22:32 Khisanth joined 22:33 bacek joined 22:36 rg1 joined 23:09 MoC joined
Coke (deep in review) (half hour time zone) Mumbai. 23:15
msg kid51 if they don't want to use fink, they can avoid specifying it in their dynamic search path. I wouldn't give options for it. 23:17
purl Message for kid51 stored.
Coke msg kid51 but then you don't seem to be doing what I suggested in my ticket either, so I'll just be confused over here. =-) 23:23
purl Message for kid51 stored.
dalek rrot: r40005 | jkeenan++ | branches/darwin2hints/t/steps/init/hints/darwin-01.t:
Test untested branch in _strip_ldl_as_needed().
23:28
rrot: r40006 | jkeenan++ | branches/darwin2hints/config/init/hints/darwin.pm:
Delete unreachable statement.
23:31
23:33 allison joined
cotto msg darbelo At some point you should make sure that a user downloading and testing your dynpmcs can run make test without expecting any new failures. 23:37
purl Message for darbelo stored.
cotto msg darbelo Also, I'm not so hot about how the default Makefile target copies the library into the build dir. 23:39
purl Message for darbelo stored.
23:44 cognominal joined 23:50 Whiteknight joined 23:53 Austin joined
dalek rrot: r40007 | jkeenan++ | branches/darwin2hints (2 files):
Add some tests for corner cases.
23:54
Austin moo 23:55