|
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 | |