www.parrotcode.org/ | Last release: 0.7.1 "Manu Aloha"
Set by moderator on 17 September 2008.
00:10 AndyA joined 00:38 Zaba_ joined 00:49 gryphon joined 00:59 tetragon joined
dmknopp if some one wanted to get a unique id for every instance of a object in an HLL, whats the best approach? /pmc_freeze.pod suggests the vm already has a unique key per object referenced by the GC. " The seen hash holds keys being the address of the PMC and values being a PMC id, which is unique for this PMC. " Is there a hook to get this id? Is that even a good idea? maybe I could use the uuid.pir instead... 01:15
cotto use the address in memory? 01:17
dmknopp also, i thought i read some where about an op code for weak refs in the GC, but I dont know where I read it 01:18
how would I get the mem addr? I tried a assignment like this $I0 = self, but that just calls a get_integer :vtable
I guess to be specific, do you know how to get the mem addr in PIR 01:19
cotto oh. from PIR. 01:20
dmknopp yeah sorry, should have been more specific 01:21
maybe its not even a good idea to do it from PIR 01:22
cotto you might look at the get_addr opcode
dmknopp ohh cool, didnt see that one in the docs
cotto I found it just now by acking src/ops 01:23
for addr
dmknopp cool. I think that put me on the right track. thx. Also, I know to check src/ops for now on. 01:28
cotto it looks like most (probably all) get_pointer implementations do what you'd expect 01:30
01:31 Zaba joined 01:38 Whiteknight joined
dalek r31928 | Whiteknight++ | calling_conventions: 01:38
: [Calling_conventions] Started refactoring things. Made a big mess and it doesn't compile, but I'm moving in the right direction.
diff: www.parrotvm.org/svn/parrot/revision?rev=31928
Whiteknight I should have put more stress on the "big mess" part of that 01:40
like, a really really big mess
01:53 petdance joined
dalek r31929 | Whiteknight++ | calling_conventions: 01:54
: [Calling_conventions] Undid changes to Parrot_PCCINVOKE and it actually compiles. Need to work now on converting it over to use the new helper function.
diff: www.parrotvm.org/svn/parrot/revision?rev=31929
01:59 tetragon joined
dalek r31930 | Whiteknight++ | calling_conventions: 02:10
: [Calling_conventions] Fixed a segfault, migrated Parrot_PCCINVOKE to the new calling helper, but we're getting an argument number mismatch somewhere (not counting the object as being passed properly, for some reason). Will debug it tomorrow.
diff: www.parrotvm.org/svn/parrot/revision?rev=31930
02:49 tetragon joined 03:08 Coke left 03:15 dmknopp left 03:20 coke joined
coke moritz: did you just kill my process again? 03:20
cotto pr0c3ss k1LL0rz 03:25
coke sighs, it probably wasn't killed by anyone. 03:50
coke needs a faster tcl, damnit.
04:11 MariachiElf joined, petdance joined
confound tcl me quickly, tcl me sweet 04:34
cotto tcl? 04:36
purl tcl is www.tcl.tk/ or TCL7::TCL8 as perl4::perl5 or possibly partcl. or rt.perl.org/rt3/NoAuth/parrot/List....;Value=tcl or segfaulting parrot since 2001. or the canary in the mine shaft, as far as parrot is concerned. or www.tcl.fr/
petdance Do we have Parrot running under Klocwork?
dalek r31931 | chromatic++ | trunk: 04:40
: [tools] Allowed smoke script to run against installed Parrot in a different
: directory (Reini Urban, RT #58852).
diff: www.parrotvm.org/svn/parrot/revision?rev=31931
r31932 | chromatic++ | trunk:
: [src] Cleaned up some conversion and signedness warnings.
diff: www.parrotvm.org/svn/parrot/revision?rev=31932
04:42 MariachiElf1 joined 04:54 MariachiElf joined
dalek r31933 | chromatic++ | trunk: 05:02
: [PMC] Pushed a standard array copying idiom into libc in ResizablePMCArray's
: append() method. See RT #58460, from Stephen Weeks.
diff: www.parrotvm.org/svn/parrot/revision?rev=31933
r31934 | chromatic++ | trunk: 05:14
: [t] Added tests to verify that isa I0, P0, P1 and isa I0, P0, S0 give the same
: results (RT #56622, Patrick Michaud).
diff: www.parrotvm.org/svn/parrot/revision?rev=31934
05:40 Zaba_ joined
dalek r31935 | chromatic++ | trunk: 05:54
: [examples] Fixed ncurses_life.pir, reformatting it and tidying whitespace and
: indentation. This fixes half of RT #57120, reported by Reini Urban.
diff: www.parrotvm.org/svn/parrot/revision?rev=31935
r31936 | chromatic++ | trunk: 05:57
: [PMC] Fixed Env PMC, which mistakenly returned CONST_STRING-created strings to
: its caller. You can't do this, lest other code modify the constant string in
: place, and things go kablooie elsewhere. Arguably, CONST_STRING should avoid
: this problem, but for now, Env PMC now returns fresh empty strings for calling
: code to mangle as it sees fit. Weird segfaults in the string subsystem
: averted. See RT #57120, filed by Reini Urban, for one symptom.
diff: www.parrotvm.org/svn/parrot/revision?rev=31936
r31937 | chromatic++ | trunk: 06:13
: [PIRC] Improved Makefile to work on Linux. (We'll see if it works on Windows
: still; but the brains came straight out of the root Makefile.) See RT #59862,
: by Klaas-Jan Stol.
diff: www.parrotvm.org/svn/parrot/revision?rev=31937 06:14
r31938 | moritz++ | trunk: 06:17
: [cage] codingstd: remove cuddled else in smoke.pl
diff: www.parrotvm.org/svn/parrot/revision?rev=31938
06:17 Zaba joined 06:22 uniejo joined
dalek r31939 | fperrad++ | trunk: 06:51
: [PCT] hllmagic
: 2 fixes needed by Lua
: - method 'push_new' (deprecated & only used by Lua)
: - method 'clone' (initialty added for Lua)
diff: www.parrotvm.org/svn/parrot/revision?rev=31939
r31940 | fperrad++ | trunk: 06:56
: [Lua] hllmagic merge
: Ugly hack.
: Modify the TGE output only for POSTGrammar.
: TGE was not updated by hllmagic (generates old form "foo::bar" instead of new one ['foo';'bar']).
diff: www.parrotvm.org/svn/parrot/revision?rev=31940
r31941 | fperrad++ | trunk: 06:58
: [Lua] hllmagic merge
: - fix Lua compiler
diff: www.parrotvm.org/svn/parrot/revision?rev=31941
07:07 Zaba_ joined 07:45 cosimo joined 07:50 iblechbot joined 07:57 particle joined 08:29 tomyan joined 08:36 bacek joined 08:49 masak joined 08:54 kj joined
dalek r31942 | kjs++ | trunk: 08:55
: [pirc/heredoc] silence compile warnings.
diff: www.parrotvm.org/svn/parrot/revision?rev=31942
r31943 | kjs++ | trunk: 08:56
: [pirc/macro] consting and fixing warnings.
diff: www.parrotvm.org/svn/parrot/revision?rev=31943
r31944 | kjs++ | trunk: 08:58
: [pirc/new] const'd about everything and fix compile time warnings.
: * so apparently, by #define'ing YYFREE and YYMALLOC /before/ #include'ing the flex-generated lexer header in the parser, the 'inconsistent dll linkage' warning is removed. Yay!
diff: www.parrotvm.org/svn/parrot/revision?rev=31944
09:01 barney joined
dalek r31945 | fperrad++ | trunk: 09:39
: [Lua] hllmagic merge
: - fix r31940
diff: www.parrotvm.org/svn/parrot/revision?rev=31945
09:45 bacek joined 10:12 particle joined 10:15 Debolaz joined 10:19 GeJ joined
dalek bernhard.schmalhofer@gmx.de | Pipp: 10:27
link: www.perlfoundation.org/parrot/index.cgi?pipp
10:41 Zaba joined 10:44 bacek joined 10:51 omega joined
bacek hi 11:03
ENOPURL?
purl ENOTTODAY
bacek ;)
11:07 rdice joined
Zaba hehe 11:19
11:26 rdice_ joined 11:32 TiMBuS joined 12:13 Bzek joined 12:25 ruoso_ joined
ruoso_ hi... 12:26
considering multi's... I've seen that parrot treats Multi as a code object... 12:27
which basically means that it should receive postcircumfix:<( )> calls directly...
but the variants for multis can be lexically declared... 12:28
which means that a single multi object is not aware of all the variants at call time
I've been considering (multi)sub dispatch process to be defined outside each sub object 12:29
basically meaning that it goes looking for all the variants on the lexical scope, and then on the package
so... for Multi to handle postcircumfix:<( )>, it means one of the following: 12:32
1) it goes in the CALLER to find all the variants...
2) making that call explicitly on that Multi object means taking into account only the variants known by that object
of course there's the option of thinking on Multi as simply a container that holds the variants, and the sub dispatcher is the one that should figure out it's a multi and make the proper lookup in the variants 12:33
what do you think? 12:36
purl I think ruoso_ should try flossing more often!
12:46 Wknight8111 joined 12:52 iblechbot joined 12:55 Andy joined
ruoso_ later & 13:14
13:17 Lorn joined 13:22 grim_fandango joined 14:02 PacoLinux joined
dalek r31946 | pmichaud++ | trunk: 14:03
: [rakudo]: spectest-progress.csv update: 204 files, 4380 passing tests
diff: www.parrotvm.org/svn/parrot/revision?rev=31946
r31947 | pmichaud++ | trunk: 14:04
: [rakudo]: Don't use leading '::' for storing generic type lexicals.
: This gets us closer to supporting interpolated namespaces.
diff: www.parrotvm.org/svn/parrot/revision?rev=31947
14:06 gryphon joined 14:30 leo joined 14:31 cognominal joined 14:48 silug joined 14:59 particle joined
particle pmichaud: i can't create 'infix:=:=', it causes a segfault :( 15:00
moritz segfaults-- 15:03
particle indeed.
moritz rakudo: my $x = 3; say ++$x++
polyglotbot OUTPUT[4␤]
particle it was a frustrating plane ride trying and failing to track that one down
dalek r31948 | pmichaud++ | trunk: 15:10
: [rakudo]: Eliminate <generic_binder> and remove '::' as a <sigil>.
diff: www.parrotvm.org/svn/parrot/revision?rev=31948
pmichaud reading scrollback now 15:16
Infinoid good morning pmichaud 15:18
moritz kj: pirc/macro/macrolexer.c has comment that it's autogenerated from compilers/imcc/imcc.l. That seems vaguely wrong. (And it has a POD error) 15:19
kj moritz: ah ok. I copy pasted that piece I think
I'll fix it tonight (kinda busy now)
thanks for noticing
moritz ok
np
kj but it compiles rather cleanly don't you think :-) 15:20
moritz it compiles, but it doesn't link
kj did you update and run Perl Configure?
chromatic++ fixed the pirc.in file 15:21
and it worked on your box :-)
(i tried this morning)
moritz I think I did, but I'll do again, just to be on the safe side
particle do you need a full configure? 15:23
or is there a make Makefile?
if not, i'll add that, it's so handy
kj there is a make Makefile, but not sure if it's working
I messed up the pirc.in file a bit
maybe by now it's working...
particle crappity. dynoplibs are busted on win32 15:24
some report about invalid dlls
*sigh*
nopaste "moritz" at 89.13.219.42 pasted "pirc link failure" (37 lines) at nopaste.snit.ch/14288
moritz (on a different box, but same system) 15:25
kj ah right
yes, that's only the heredoc preprocessor
eh, my bad. I added a #define that acts as a swtich to link to libparrot or not
and it's enabled now...
so either disabling it or by fixing the pirc.in file to link libparrot will make it work 15:26
I'll do that as well tonight ;-)
moritz allright
kj but running the macro processor and pir parser will work
afk. bbiaw 15:27
moritz who runs rakudo.org? its CSS is busted. 15:28
15:28 jq joined
moritz it has an @import that's a 404 15:28
rakudo.org/mt-static/themes/unity-t...screen.css # this one
pmichaud andy lester runs that one 15:29
(aka petdance)
moritz summon petdance 15:30
no summon bot here ;)
pmichaud alester: ping petdance: ping Andy: ping 15:31
purl I can't find petdance: in the DNS.
15:31 Zaba_ joined 15:40 silug joined 15:45 johbar joined 16:04 hercynium joined 16:06 cjfields joined
Wknight8111 we need a word to get somebody's attention besides "ping", because that confuses purl 16:08
like "alester: Holla-back-gurl" 16:09
or, something even less inappropriate then that
moritz we shouldn't let purl dominate our communication habits.
I'd rather kick her than adapt
Wknight8111 we shouldn't, but I do anyway
moritz ... myself 16:10
particle ping myself
purl I can't find myself in the DNS.
Wknight8111 particle: Holla back
16:10 jan joined
Wknight8111 or, particle: Where you at? 16:11
all I know about interpersonal communications, I learned from rap songs and cell phone ads
pmichaud we need purl to be smart enough to know that if we say 'ping' but follow that with a non-dotted name, it's probably not a DNS request.
Wknight8111 whoa! you act like purl is some virtual agent that can be repurposed easily, as if by entering a new sequence of commands 16:12
16:12 peepsalot joined
Wknight8111 actually, that's probably better 16:13
Infinoid Wknight8111: word
pmichaud I agree with the principle that purl should adapt to our needs and not vice-versa.
I also recognize that "fixing purl" may in fact be very unlikely.
Infinoid pings Masque about it. 16:16
16:20 jhorwitz joined 16:24 Theory joined
dalek r31949 | Whiteknight++ | trunk: 16:31
: [Book] Add small blurb about the purpose of PCT
diff: www.parrotvm.org/svn/parrot/revision?rev=31949
Wknight8111 Anybody around here know about sub signatures? 16:32
moritz a bit
I removed the wort cruft from $Book 16:33
but not sure about the some of the rest
Wknight8111 If we're calling a method, do we include the invocant somehow in the signature?
moritz optinally
*optionally
Wknight8111 how? like "P..." for the invocant?
moritz method foo ($invocant: $args, *@rest)
if there's no invocant, you can still access it as `self' 16:34
Wknight8111 Oh no, I'm talking about at the Parrot level, not the perl 6 level
moritz sorry ;)
Wknight8111 it's okay
cjfields I think self works if the sub is a method 16:35
in PIR
s/works/only works/ 16:36
moritz if it's not a method you don't have an invocant ;)
cjfields right
Wknight8111 for intance, if I call $P0.my_method(), is the signature "P->" or is it "->"? 16:37
16:37 DietCoke joined
DietCoke ps? 16:37
purl i guess ps is postscript or process status or see "parrotsketch"
DietCoke parrotsketch?
purl i think parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
Wknight8111 Yeah Coke, you're about 2 hours early
16:38 Andy joined
DietCoke just double checking the teim. 16:38
seen tene?
purl tene was last seen on #parrot 23 hours, 6 minutes and 58 seconds ago, saying: Oh, attachment
Infinoid Andy!
particle error:imcc:Sub isn't a PMC
...lovely.
Andy \\Yes?
Infinoid [08:28] <@moritz> who runs rakudo.org? its CSS is busted. 16:39
Andy May I help you?
oh, busted how?
moritz no, me ;)
Andy: one of the @import URLs is a 404
17:28 <@moritz> rakudo.org/mt-static/themes/unity-t...screen.css # this one
DietCoke seen chromatic? 16:40
purl chromatic was last seen on #parrot 4 days, 10 hours, 6 minutes and 0 seconds ago, saying: It made sense at the time. [Oct 10 06:34:13 2008]
DietCoke where are the latest parrotsketch logs? 16:41
www.parrotcode.org/misc/parrotsketch-logs/ stops in 200809
Infinoid irclog.perlgeek.de/parrotsketch/today
moritz or just irclog.perlgeek.de/parrotsketch/ (that's a calendar)
DietCoke are the official logs no longer kept?
particle kj: ping
DietCoke have those replaced them? 16:42
Andy wow, that's awful moritz
DietCoke Or is that just a supplement that we're lucky to have?
particle DietCoke: i think the bot was missing for a bit
moritz doesn't even know how runs the offical logs
particle tweety logs #parrotsketch for perl.org
moritz s/how/who/
particle robrt is tweety's slave 16:43
Wknight8111 indentured servant
moritz not the other way round?
particle who wants to hack imcc.y?
Wknight8111 what do you need hacked?
Actually, I can't do it till I get home, no compiler on this system 16:44
DietCoke I sent an email to webmaster@perl.org asking after tweety's logs
16:44 Zaba joined
nopaste "particle" at 98.232.28.49 pasted "this rakudo code busts imcc" (17 lines) at nopaste.snit.ch/14289 16:45
Tene DietCoke: pong
particle applying that patch, relative to languages/perl6/ makes imcc throw an exception 16:46
Andy moritz: Fixed.
Tene DietCoke: my girl was using my laptop all last night, so I wasn't able to get it from her to work on your bug
Andy Thansk for the heads-up.
particle the line it hits is compilers/imcc/imcc.y:1655
Andy So has anyone talked to Klocwork about them running our stuff?
moritz Andy++
Andy Like Coverity?
particle has never heard of klocwork
Andy they're like Coverity
and they do open source stuff too
There used to be opensource.klocwork.com 16:48
but it is no more
Wknight8111 particle, I'll take a look at this tonight when I get home, if nobody does it first 16:50
DietCoke the one sample they show here (www.klocwork.com/products/insightDefects.asp) should be caught by how we're declaring our functions, neh?
s/one/first/
particle aargh! Wknight8111, nevermind 16:54
Wknight8111 ???
particle .return $I0 should be .return ($I0)
then it works.
Wknight8111 okay, but I'm telling people that I fixed it 16:55
Infinoid "To have your open source project analyzed, contact opensource@klocwork.com." 16:57
-- www.klocwork.com/company/releases/06_26_06.asp
I can do that, if noone else wants to
particle sure, go ahead. Infinoid++ 17:00
17:11 ruoso joined
Infinoid (email sent) 17:11
ruoso is this channel still logged? 17:12
yes it is
hercynium so... I can't just shout out random profanities anymore? 17:13
17:13 ZuLuuuuuu joined
PacoLinux irclog.perlgeek.de/parrot/2008-10-14#i_620927 17:14
moritz hercynium: sure you can. There's so much data noise in here that nobody will evver fiind it. Except your future empolyer of couse, by pure chance ;)
hercynium :) 17:15
They can just look thru the comments in my code for more damning evidence 17:17
Coke I see parrot's lolcode mention in wikipedia is gone. "(Removed a statement supported only by blog posts) (undo)"
Coke is bemused by the thought that blog posts don't count. 17:18
moritz uhm, isn't lolcode mentioned in languages/LANGUAGES_STATUS.pod?
kj particle: pong 17:19
particle hey there kj
kj hi
particle imcc throws a funny error when you leave out the parens in .return
kj what .return? :-) There's different contexts for .return 17:20
particle .return $I0 gives "error:imcc:Sub isn't a PMC"
.sub 'foo'
kj .begin_return, .return()
particle .return $I0
.end
kj yeah probably because it wants to do a tailcall?
particle ah, yeah, probably
Coke en.wikipedia.org/w/index.php?title=...on=history :: edit from oct 1, 00:41
kj but yeah, not helpful
NotFound Coke: write 'LOLCODE in a nutshell' or something for O'Reilly, to have a published source to quote it in the article.
kj particle: with any luck, I'll make some progress the coming months on Packfile writing 17:21
particle yes, it's a syntax error because i'm not .return-ing a PREG
kj so we dont' need to fix IMCC :-)
particle imcc should only attempt tailcalls when .return-ing PREG
Coke NotFound: if only I cared that much.
particle otherwise emit error about missing parens
Coke I am merely sad that my only reference on wikipedia was edited out.
NotFound 'LOLCODE for dummies' will be redundant, it isn't?
particle "I CAN HAZ LOLCODE?" 17:22
Coke It would probably inappropriate for me to add myself back in, so I mention it here as a curiosity. 17:24
en.wikipedia.org/wiki/Wikipedia:List_of_policies doesn't seem to prohibit blogs as a source. =-)
particle it can be backed up by a readme file in an svn repo, can't it? 17:25
NotFound Coke: en.wikipedia.org/wiki/Myself
17:25 ZuLuuuuuu left 17:26 apeiron joined
Coke I presume that's just a riff on "adding myself"? 17:27
or are you correcting my grammar?
NotFound Coke: I'm even unable to correct my own. 17:28
dalek r31950 | julianalbo++ | trunk: 17:34
: some tests for the 'open' opcode, RT#59544
diff: www.parrotvm.org/svn/parrot/revision?rev=31950
Wknight8111 Coke: Trust me, WP forbids using blogs as sources 17:39
I've fought that battle on more then one occasion
I wish I had brought my personal laptop to work today, I could be compiling parrot as we speak. But, no 17:43
pmichaud how about presentations ... do those count as sources? 17:47
17:55 chromatic joined
kj chromatic++ # thanks for fixing pirc.in! 17:56
chromatic You're welcome. Does Windows still build? 17:57
kj I just tried, doesn't seem so
my system can't find libparrot.lib 17:58
cannot open file 'libparrot.lib' is the message
chromatic I didn't copy over any of the conditioned lines in root.in. 17:59
kj copying libparrot.lib to compilers/pirc didn't help matters; then I get all sorts of link errors
18:10 grim_fandango joined 18:12 barney joined 18:14 Ivatar joined
Coke chromatic: thought you'd like this: when I run "../../parrot tcl.pbc t_tcl/expr.test", and it eventually hangs, consuming memory, if I run that through gdb first, and hit ^C, I get a backtrace several hundred (thousand?) lines long, looks like it's infinitely throwing an exception. 18:17
(So far efforts to reduce the amount of code necessary to generate the hang have come to naught. Think I'm going to see if mac's "sample" tells us anything interesting. 18:18
chromatic Rakudo has something similar. 18:19
I'm surprised you don't run out of stack space before it consumes all memory.
18:19 rdice_ joined
Coke maybe the garbage collector is really good. 18:19
Wknight8111 if it's throwing exceptions repeatedly, it wouldn't consume much stack space, would it?
Coke </straight man> 18:20
would on the c-stack, no?
chromatic A backtrace in gdb that's thousands of lines long eats up stack space.
Coke chromatic: honestly, I never let it fail. After 30m of chewing CPU and memory, I typically give up and kill it. 18:21
chromatic 30m is a lot of CPU and memory.
Coke yes.
chromatic You have to multiply by one a lot of times to figure out how much memory it is.
Coke ^_- 18:22
18:22 Wknight8111_ joined
chromatic Something in the exception "Hey, I can't handle this! Rethrow!" code is either A) difficult to use interface wise or B) completely rotten. 18:23
I think we need to put a lot more "Here's what I can handle!" data in our exception handlers.
Tene chromatic: do you have pir to reproduce?
Tene starts reading scrollback 18:24
Coke even before the hang, I'm getting a huge sample file: (nopaste shortly)
Tene If you can find the exception handler it's looping in, we can add filters. 18:26
chromatic I don't like an interface where it's possible to create infinite loops in PIR by writing simple code that's not obviously an infinite loop. 18:27
#ps in 2 18:28
Tene Oh, #ps! 18:29
chromatic: what do you think about requiring exception handlers to declare the type of exception they handle? 18:30
18:30 peepsalot joined
chromatic Tene, I like that a lot better. 18:30
Coke I wouldn't mind that if we had a well thoughtout set of types. 18:31
chromatic There's the slutty cheerleader, the math nerd, the sensitive social outcast, the jock.... 18:32
Wait, did you say "types" or "tropes"?
pmichaud ...requiring? Or allowing?
chromatic We already allow them, but my inclination is to require them -- unless we can find a way to avoid that easy-to-fall-into redispatching bug. 18:33
Wknight8111 Dietcoke changed his name back to Coke so he could report ahead of cotto 18:34
pmichaud as long as there's a way to have exception handlers that can handle multiple exception types, I think I'm okay with that.
(and I'd like an easy way to say "catch everything")
Tene chromatic: Can you find an EH that currently loops? 18:35
chromatic Right. We have to balance ease of use with the idea that you shouldn't be able to crash Parrot by writing normal-looking PIR.
Coke ... ANY kind of pir, TYVM. =-) 18:36
but especially that kind, yes.
Tene EHs shouldn't be looping unless you're throwing an exception type that you've asked the exception handler to handle.
18:36 silug joined
Coke ... yes, but since you can't specify that now, how is the looping even happening? 18:36
Tene It should still have the old behavior otherwise
chromatic They shouldn't, but look at the Rakudo backtrace I posted last week.
Tene Coke: you can specify that now.
pmichaud I don't think that's a "loop"
I think that may be four separate exception handlers. 18:37
(Haven't looked closely yet.)
Coke tene: really? how?
purl i heard really? how was that possible?
chromatic jhorwitz, did I fix the name segfault problem you had in RT #59732?
Tene Coke: look at the end of t/pmc/exceptionhandler.t
jhorwitz checking RT..
Wknight8111 purl forget really? how? 18:38
purl Wknight8111: I forgot really? how
Tene eh.min_severity/max_severity/handle_types
jhorwitz chromatic: yes, that was was fixed.
Coke Tene: I feel dirty, but ok.
Tene Coke: huh?
pmichaud PGE and Perl6Grammar have traditionally used exception handlers to handle the case of calling new_class multiple times... because for a while there wasn't a way to check if a class already existed.
chromatic Tene, RT #59778. 18:39
pmichaud (well, before the exception handler approach they used find_type to do it, but find_type was removed.)
Coke tene: it's very different from the push/pop code I'm used to seeing for exception handlers.
Tene Coke: if you want to define a macro for it, feel free
Coke I'm wondering how the simple push/pop stuff would recurse. 18:40
Tene Coke: it shouldn't, but it's sketchy.
pmichaud ...are we sure it's a recursion?
Coke I'm not, no. 18:41
chromatic For RT #59778 it certainly looks recursive.
At least at the C level it is.
pmichaud I think it might simply be four separate attempts to create the same class
(or four attempts to create an existing class)
again, I haven't looked all that closely, but that's my initial guess. 18:42
chromatic That may be, but I think I've seen it many more times than just four. 18:43
pmichaud I suspect that if I recode Perl6Grammar to not use push_eh/pop_eh when creating its classes that the problem will disappear. 18:46
dalek r31951 | kjs++ | trunk:
: [pirc/macro] fix pod error and fix a comment mentioning imcc.
diff: www.parrotvm.org/svn/parrot/revision?rev=31951
r31952 | kjs++ | trunk:
: [pirc/new] fix comment 18:47
diff: www.parrotvm.org/svn/parrot/revision?rev=31952
18:48 Wknight8111_ joined
Wknight8111_ did my report to #ps go through? 18:48
chromatic Looked like a two liner.
pmichaud anyway, I'll try removing the exception handlers surrounding the various calls to newclass and we'll see what we get.
Wknight8111_ yeah, that was it
my client is goofy today 18:49
pmichaud or, more likely, I'll just switch the code to let me see when those handlers are being invoked.
dalek r31953 | kjs++ | trunk:
: [pirc/heredoc] fix comments pointing to imcc.l
diff: www.parrotvm.org/svn/parrot/revision?rev=31953
cjfields chromatic, did you post allison's report?
Coke yes. 18:50
cjfields ok
Coke purl, cjfields?
purl wish i knew, coke
18:51 Zaba joined
cjfields purl, cjfields? 18:53
purl you are, like, Chris Fields, a core developer for the BioPerl project
Coke was just curious since you weren't on the email containing the report. =-)
nopaste "particle" at 98.232.28.49 pasted "[p6] export.t diff for particle" (75 lines) at nopaste.snit.ch/14291 18:54
Wknight8111 what is BioPerl?
purl i think BioPerl is the perl used by the human genome project to scan sequence data.
Wknight8111 o, woot
cjfields yep
barney cjfields++ for contributing to BioPerl 18:55
cjfields thx
cjfields working towards an (eventual) bioperl6 18:56
barney It helped me a lot when I worked at Biomax
cjfields Great to hear that!
I may be giving Rakudo a bit of a work out with genome and microarray data once grammars are a bit further along 18:58
particle what's missing in grammars?
cjfields Coke: I was backlogging #parrotsketch on irclog.perlgeek.de/parrotsketch/today, just didn't see the report 18:59
particle: how we tie rule matches into (perl6) closures. I don't think it's implemented yet.
pmichaud cjfields: do you mean embedding closures inside of matches? Or something different? 19:00
chromatic Why does IMCC parse this class name as a Slice? 19:01
$P0 = get_class ['TGE'; 'Parser']
particle almost implemented Q:PIR last night
cjfields pmichaud: well, I would like something which passes along match information to a Closure or method 19:02
particle imcc is as imcc does
chromatic Oh goodie, I get to change a *parser* again.
Let me go put on my party hat. 19:03
Wknight8111 I like parsers, I wish I were better at them
pmichaud afk for a bit.
cjfields (I could do something like this w/ Q:PIR for the time being)
chromatic klass = newclass [ 'Not'; 'A'; 'Slice' ] 19:04
1 newclass P0, PC21 P0=PMCNULL PC21=Key=PMC(0x80ee9a8)
klass = get_class [ 'Not'; 'A'; 'Slice' ] 19:05
0 get_class P0, PC7 P0=PMCNULL PC7=Key=PMC(0x80eea6c)
Okay. My mind is now officially boggled.
cotto it's like a Zen koan 19:07
kj (parsing as a slice) It's probably because it's the first or second operand is a keylist 19:09
I had some trouble figuring that out recently; problem is that a keylist can be just any operand 19:10
chromatic That's exactly what it is.
kj but PIR also allows special sugar for keyed access
so there you go. shift/reduce errors if you don't figure out your grammer properly
chromatic I added maybe_ns for the NEW state a while back, but get_class can accept a namespace and not a slice there too. 19:11
Maybe we should add some token for class-based assignment to the assignment rule and require that they have maybe_ns instead of '[' keylist ']'
kj parsing gets tricky if there's a (possibly dynamic, user-defined) op that takes 2 operands, like this: $P0 = foo ['hi there'] 19:12
19:12 cotto joined
kj what happens if 'foo' is an op? 19:12
that's a rhetorical question :-) 19:13
chromatic I'm willing to go only so far in beating IMCC in any given day.
kj i gave up already...
chromatic I just don't want to let its worst bugs stand in the way of people getting serious work done. 19:14
particle write your own parser to replace it. that seems to be the way around here.
kj so what happens if you don't use the PIR sugar?
just get_class, then the ops
particle: seemed like the way I would have most fun :-) 19:15
particle :)
chromatic I'm not sure IMCC would do any better that way, either.
kj I have a tiny bit of hope it would work better 19:16
chromatic I'm not aware of anything in the IMCC grammar which disambiguates between a slice and a classname-as-key. 19:17
At least, besides what I added for NEW.
kj weren't slices deprecated anyway? 19:19
19:22 davidfetter joined, gryphon joined
Coke wwould any other hlls find it useful to be able to define a sub's usage error message? 19:22
dalek r31954 | particle++ | trunk: 19:23
: [rakudo] add 'infix:=:=' and 'infix:!=:=' ops
diff: www.parrotvm.org/svn/parrot/revision?rev=31954
Coke (tcl is currently forced to have a blanket signature and then do its own arg checking so it can throw an exception with teh right usage)
pmichaud Rakudo is likely to end up with its own dispatcher.
kj particle: I looked briefly in the weird error message with the tailcall 19:24
particle pmichaud: ping
kj can't really fix it easily..
pmichaud particle: pong
particle kj: that stinks
but, that's imcc :)
Coke pmichaud: that doesn't seem to bode well for interop, does it/
?
pmichaud Coke: if Parrot's dispatcher isn't going to support Perl 6 semantics, what choice do we have?
particle pmichaud: can you svn up and look at src/parser/actions.pm:866 19:25
dalek r31955 | particle++ | trunk:
: [rakudo] refactor 'is export()' trait code to prepare for handling taglists
diff: www.parrotvm.org/svn/parrot/revision?rev=31955
Coke yay, balkanization.
kj particle: of course, the error message itself can be easily changed, possibly into something more descriptive; but there would be no difference in .return $I0() and $I0() in a non-return context.
particle having trouble getting at the contents of (...) in is export
kj: you can't invoke anything but PREG 19:26
pmichaud Coke: Don't get me wrong, I'd love to be able to use the built-in dispatch. But my feeling is that Parrot isn't likely to get there.
particle ...so no difference between .return foo and foo is fine with me 19:27
actually, hrmm
kj: there is a difference
kj particle: exactly, and so if you write $I0() you'll get the error message Sub isn't a PMC
particle .return <something not inside parens> # invokes something
<something not inside parens, no trailing parens> # doesn't invoke 19:28
kj particle: .return tailcalls will be marked by .tailcall , as in .tailcall foo(), in the future. Allison suggested that.
19:28 bacek joined
Coke pmichaud: ah well; if there's no point pushing for this in core, I'll just roll my own. ah well. 19:29
pmichaud Coke: I'm not saying it's pointless for core... just that I'm not sure Rakudo will be able to take advantage of it
I don't know if it would be useful for other Parrot languages 19:30
I could potentially see NQP using it, and possibly Pynie
particle: the things inside of an <EXPR> are almost never identifiers. 19:32
look at a parse tree and see what's really there.
in this case they're likely be to be a list of pairs 19:33
however, as S11 is written that seems a little weird -- I'm not sure that colonpairs parse quite like that in an expression.
although STD.pm seems to parse them okay. 19:35
Coke pmichaud: fair enough; but to my way of thinking, if I can't interoperate with rakudo, there's not much point.
pmichaud well, there's nothing that says that rakudo's dispatcher can't use the same attribute that parrot's dispatcher is using 19:36
or something similar
19:36 sjansen joined
particle pmichaud: the <identifier> thing is tacked on there, but anything i try to assign to $list causes an error 19:37
pmichaud particle: compile or runtime?
particle trying now
pmichaud there's also the issue that you can't necessarily expect the <postcircumfix> node to contain a <semilist>. 19:39
particle yeah, i kept questioning how to interrogate the postcircumfix for named args 19:40
s/named args/taglists/
i don't really know what i should do there 19:41
pmichaud I'm not sure either... I need to see how that actually parses
particle i'll paste it as soon as rakudo rebuilds
pmichaud currently Rakudo doesn't parse is export(:DEFAULT :others) 19:42
it does parse is export(:DEFAULT, :others)
moritz shouldn't that be :DEFAULT, :others)
pmichaud S11 shows it without the comma.
yes, life is easier (I think) if we require the comma.
but I suspect $Larry has reasons for the current syntax. 19:43
dalek r31956 | kjs++ | trunk:
: [imcc] this fixes the 'inconsistent dll linkage' warning on windows systems. Compiles both on windows and linux.
diff: www.parrotvm.org/svn/parrot/revision?rev=31956
moritz STD.pm says it's a noun with two colonpairs
which doesn't look like a mis-parse 19:44
pmichaud ah, that's new.
we can update Rakudo to have that.
moritz bug perhaps ask TimToady first
pmichaud ("new" == "relatively new" == "changed since the last time I looked at noun parsing)
particle ah, i assumed commas were needed 19:45
moritz I'm not looking at the parsing, just at the parse tree ;)
pmichaud token noun has
| [ <colonpair> <.ws> ]+
moritz ah
pmichaud last time I looked at this it was just | <colonpair>
moritz there are two occurences of such things in the test suite 19:46
(from a casual ack)
S11-modules/OuterModule.pm and packages/S11-modules/Foo.pm
particle ...both edited by me recently... 19:47
pmichaud that gets kinda weird, because it means that 3 + :a :b is a valid parse I think
and :b isn't an adverb.
particle oh well 19:49
cjfields pmichaud: that is similar to the issue I was having with regex modifiers 19:50
particle at least the code is ready for taglists, when it's decided how they'll be specified
pmichaud++
pmichaud particle: I'd focus on getting it to work for is export(:DEFAULT, :other) for now
I *know* that will be valid.
(at least, based on current S11 and STD.pm)
particle ok, that is what i was trying to do
cjfields as in, $foo.match(:g, /\\d+/) vs $foo.match(:g /\\d+/)
pmichaud you'll want to look at the value of $($aux<postcircumfix>) 19:51
you can run through its children looking for nodes with a 'named' attribute.
(once again, trying to grab things out of the syntax tree itself is not the right way to do it :-)
moritz d'uh, I was trying to find tests that the =:= made pass, and couldn't find any... then I noticed that I should 'svn up' first ;) 19:52
particle pmichaud: yeah, that was debugging, i was trying to understand the tree, $() is the way to go. thanks 19:54
pmichaud postcircumfix:<( )> will generate a PAST::Op node of type 'call', with the arguments as its children
named arguments will have a 'named' attribute 19:55
particle while debugging nqp, can i print the past immediately? 19:59
like: my $list_past := $( $aux<postcircumfix> ); say($list_past);
particle rebuilds and tries
dalek r31957 | kjs++ | trunk: 20:01
: [pirc/new] fix c++ warnings.
diff: www.parrotvm.org/svn/parrot/revision?rev=31957
20:02 lasermike026 joined
pmichaud ...you want to "say" a PAST::Op node? 20:04
you might be able to dump it
particle yes, and it works
pmichaud _dumper($list_past)
afk for a short while 20:05
dalek r31958 | kjs++ | trunk: 20:07
: [pirc/heredoc] disable linking to libparrot.
diff: www.parrotvm.org/svn/parrot/revision?rev=31958
20:15 particle1 joined 20:20 Theory joined 20:25 johbar joined
nopaste "chromatic" at 69.64.234.10 pasted "Buggy IMCC Patch to Enforce Key Context for Classy Ops" (80 lines) at nopaste.snit.ch/14292 20:27
chromatic kjs, that nopaste might be interesting to you.
20:27 bacek joined
kj does it work? 20:28
purl does it work is it used? =-)
chromatic Not entirely. 20:29
error:imcc:syntax error, unexpected '\\n', expecting COMMA
in file 'runtime/parrot/library/Data/Dumper/Base.pir' line 29
error:imcc:syntax error, unexpected '\\n', expecting '['
in file 'runtime/parrot/library/Data/Dumper/Base.pir' line 34
error:imcc:syntax error, unexpected '\\n', expecting COMMA
kj I guess for a short-term solution, it looks fine. However, long-term, especially with dyn.loadable ops, having special rules is not a good idea. But I guess you would agree on that.
chromatic There's a comment in iNEW in parser_utils.c which suggests tagging ops which expect a classname as a parameter. 20:30
20:30 particle joined
chromatic Somehow I added way too many s/r conflicts, and we're triggering the wrong rules in the wrong situations. 20:30
I need to get back to paying work, but I thought you might have some insight. 20:31
kj ddb_class = get_class "Data::Dumper::Base"
this might be a problem; this is the line that is an error
needs to be converted to [] style I think
chromatic In theory the string form should still work; I don't believe we've deprecated it. 20:37
kj it's deprecated, but that's what triggers the error 20:38
I think
*deprecated but not yet removed
but as slices are deprecated too, that should be removed, and then the problem might be solved. Not sure, though. 20:39
chromatic I can't figure out which rule I added trips the problem.
Did we deprecate slices altogether?
kj well, depends on your definition :-)
nested keys is still ok i think as in ['x';'y']
chromatic If we did and can remove them, I can solve the problem in IMCC by removing all of the slice code, which doesn't hurt my feelings.
kj so in my understanding, a slice is a fancy notation for a subset of an array 20:42
like [1 .. 2] or [1, 10] 20:43
or whatever.
and that includes I think [1;10], I see the rule keylist_force
eh, *keylist, where imcc->in_slice = 0; in keylist, however, in_slice = 1. 20:44
aaaah. I don't understand that code. I think keylist_force is the rule for keylists that are an operand to an op, whereas keylist is the key on a register. 20:46
chromatic That sounds right to me. 20:57
kj gotta go, otherwise no bus back home. Good night 21:02
21:06 particle1 joined 21:13 particle joined 21:37 TiMBuS joined 22:03 Whiteknight joined
Whiteknight chromatic, you still here? 22:03
Coke seen tene? 22:05
purl tene was last seen on #parrot 3 hours, 25 minutes and 35 seconds ago, saying: Coke: it shouldn't, but it's sketchy.
Tene seen Coke? 22:06
purl Coke was last seen on #parrot 6 seconds ago, saying: seen tene?
Coke tene: any chance you've been able to look at Tcl/Glob?
Tene gimme link to rt or nopaste or whatever
I have time right now
Coke rt.perl.org/rt3/Ticket/Display.html?id=59870 22:08
it relies on some guts that I think got updated on the faux namespace to real namespace cleanup.
if I can get even an updated version of the test file working, I can then update partcl to do it the new way and then hopefully be able to use the release next week as a stable-ish release for partcl to rely on. 22:09
Tene works on it now 22:10
Coke tene++ # in anticipation 22:11
Tene So that file, on its own, you claim should work in parrot trunk?
Coke ... no
Tene Oh. 22:12
Coke Attached is a test file that works in r31835, but fails in r31925.
Tene Ah.
I see it now
I was trying to ask "Parrot should be updated so that that file works with parrot trunk" 22:15
Coke that file or something like it. =-)
If the 'compreg' line changes in the test, for example, that'd be fine.
Tene But not if I replaced it with: print "ok 1\\nok 2\\nok 3\\n" 22:16
;)
Coke *thwap*
Tene Ack!
Coke don't make me give you a partcl commit bit. :P
chromatic Whiteknight, pong. 22:17
Coke (which, btw, you're welcome to if you want one.)
Coke pounces on chromatic.
"make parrot faster!!!!! *whinge*"
chromatic Give me a shortish (< 100 lines) (hey that's valid Pheme code) example of slowness and I'll do what I can. 22:18
Tene Coke: Wait, lemme check my karma before I commit this fix
purl: karma tene
purl tene has karma of 286
Tene 286 is a good number
Whiteknight sorry for the delay!
Tene 2*11*13 22:19
purl 286
Tene Nice factors
Whiteknight chromatic, in a function signature, is the invocant explicitly listed as one of the parameters or not?
Tene 2*2*2*5*7
purl 280
chromatic It gets stored in a special slot in the interpreter. 22:20
Tene 7*41
purl 287
chromatic I'm not sure if that's what you're asking though.
Tene Yeah, okay, 287 is better.
Whiteknight like the function P.meth(S, N, I) have the signature "PSNI" or "SNI"?
chromatic In an NCI context, an MMD context, or something else?
Whiteknight yeah, it gets stored in interp->current_obj, and is also gets passed as the first argument
contexts? damn I dont know about contexts 22:21
chromatic I don't think it's the first argument; there's a special P reg for it in the calling conventions. P5 or something. At least, that's how it worked the last time I read the calling conventions PDD.
Not context as in "What's the guts of a Continuation" but as in "Which working set of jargon do I need to swap in for this conversation?"
dalek r31959 | tene++ | trunk:
: [library]: Fix namespace issues reported by Coke++
diff: www.parrotvm.org/svn/parrot/revision?rev=31959
Coke tene; can you add the test file? =-) 22:23
tene++
Tene Coke: can you tell me where in t/ it should go? 22:24
Whiteknight The invocant of a method definitely gets passed as the first parameter, I'm certain of that because that's the exact mechanism that I broke 22:25
Coke t/library/tcl_glob.t, probably
Whiteknight What I don't know is if the signature string reflects it's existence or not
I guess I'm talking about regular MMD signatures
or whatever signature type is taken by Parrot_PCCINVOKE
chromatic I don't believe you need to put a P in there for the invocant. 22:26
I'm 85% certain. 22:27
Whiteknight no, I just did an ack and it doesn't look like it's required. All I need to do then is push in the invocant into the CallSignature PMC, and not affect the signature string
that's good for me
chromatic That sounds right to me too.
dalek r31960 | tene++ | trunk: 22:29
: [library]: Add a test for Tcl::Glob
diff: www.parrotvm.org/svn/parrot/revision?rev=31960
Tene Someone using svn should update MANIFEST and metadata for that file.
chromatic Just a moment. 22:30
Tene Coke: Thank you for following through and harassing me to update that. I really appreciate that.
Coke orly?
purl YA RLY.
Tene Coke: YARLY. Harassing people about bugs isn't fun, but it's an important task.
Infinoid karma Tene 22:32
purl tene has karma of 289
Infinoid 17*17 22:33
purl 289
cotto it'd be more efficient to make purl do that
(although less nerdy, so it probably won't happen) 22:34
chromatic purl factor 289
purl chromatic: i'm not following you...
Infinoid we need a more hackable purl.
chromatic Tene, as long as you're fixing class namespaces, did you take a look at TGE?
Tene chromatic: I know very little about TGE, and I've never used it. Can you point me to examples of breaks? 22:35
Oh, 'make test' in compilers/tge 22:36
chromatic When it turns .tg files into PIR (like PGE turns .pg files into PIR), it uses the old style of class namespaces.
Tene Okay, so its code-generation needs to be updated.
Infinoid (3*3+2*2*2)**2 22:37
purl 289
Infinoid cotto: is that nerdy enough?
cotto it passed "enough" a long time ago 22:39
although I'm just saying that because I'm not good at it
Tene Neither am I. I try to care about karma factorization to get practice. 22:40
Infinoid chromatic: quick question... are CPointer PMCs supposed to point at a PObj? because that's what CPointer.mark() seems to be assuming
guess the factored question is... is everything a PObj? 22:41
chromatic If it's an 'S' or a 'P' CPointer, yes.
Infinoid apparently it is a 'P' CPointer; the crash happens when it calls pobject_lives() on the PMC pointer 22:42
chromatic You might have to set a watchpoint on that value to see when it changes. 22:43
Tene ... oh, 'make test' was only failing because I needed a realclean.
chromatic At least, on the assumption that it's valid sometime.
Infinoid the pointer value doesn't seem to change
perhaps the PMC's contents have been overwritten
22:44 ruoso joined
dalek r31961 | coke++ | trunk: 22:44
: [distro] minor cleanup on new file
diff: www.parrotvm.org/svn/parrot/revision?rev=31961
chromatic I'd set a breakpoint in new_pmc_header when something allocates that PMC, then set a breakpoint on its data member.
Although in this case, you can see the enclosing PMC_data and set a breakpoint within init when it first allocates the struct's memory. 22:45
Then set a watchpoint to see how the value of the ->pointer attribute changes over time.
Coke bah. now I'm failing tryin gto set the &!ws attribute on my optable.
chromatic My guess is that something sets it to an invalid value somewhere we don't intend.
Tene chromatic: can you show me anywhere in the tree where there are TGE-related failures? 22:46
chromatic Pheme
Tene Okay. I'll look.
Coke Hurm. that may be what's affecting me as well. I'm getting a NULL return value on $P0 = get_hll_global ['TclExpr::Grammar'], '$optable' 22:48
chromatic That should probably be [ 'TclExpr'; 'Grammar' ] 22:50
Tene We really need to start updating everything in the tree to use real namespaces instead of fakes
Infinoid hmm. are there any places where a PMC is created without new_pmc_header() being called? it seems to be sneaking past the breakpoints I've set.
chromatic ... but TGE doesn't use a real namespace there.
Coke chromatic: yes, well, that doesn't work either. =-)
Tene chromatic: woudl you endorse updating TGE to use real namespaces this close to the release?
chromatic Infinoid, there shouldn't be, unless it's a constant PMC baked into the tree.
Tene, only if we want those languages to pass their tests before the release. 22:51
Coke I'd endorse fixing ... what chromatic said. =-)
Tene chromatic: I meant in TGE itself
chromatic Is that necessary to fix the languages, or just an ancillary cleanup?
Tene Probably ancillary cleanup, but it might make the problem more obvious. 22:52
Although, to be honest, I'm also trying to avoid reading and understanding all of TGE
chromatic The next release is a week away. We'll have time to fix any breakage if we stay on top of it. 22:53
Coke yah, as soon as there are failures in the smolder tests, they'll get fixed. =-) 22:54
Tene If someone who knows TGE could add a failing test to t/compilers/tge, I'd be very grateful. I'm not holding my breath, though.
Infinoid sigh, my breakpoint condition needed an extra set of parens, working now 22:55
22:56 dmknopp joined 23:03 jrockway joined
Infinoid chromatic: when you said "->pointer attribute", did you mean ->data? or ->cache._ptrs._pmc_val? 23:05
I'm still not very familiar with the pmc structure internals.
chromatic Look at the ATTR declaration in the CPointer PMC. 23:06
One element is the type and one element is the pointer.
Infinoid so that's a structure pointed to by pmc->pmc_ext? 23:07
or do they overlay the pmc structure elements directly somehow?
Infinoid reads pdd17 23:09
Tene Going home now.
Infinoid ah, that's what data points to. got it
chromatic Exactly. 23:11
dalek r31962 | Whiteknight++ | calling_conventions: 23:14
: [Calling_conventions] As promised, committing a change that allows parrot to compile without segfaulting. Undid changes to Parrot_PCCINVOKE, but I think I'm getting closer to a merger of the two implementations.
diff: www.parrotvm.org/svn/parrot/revision?rev=31962
r31963 | cotto++ | trunk:
: [pmc] POD formatting fix
diff: www.parrotvm.org/svn/parrot/revision?rev=31963
Infinoid the pointer was initialized to zero, assigned once, then segfault. pointer value is still the same at the time of the segfault
...and is not the same as the value that pobject_lives() was apparently called with 23:15
chromatic That's bizarre.
Infinoid that value isn't even aligned to a dword boundary.
chromatic There's part of the problem.
Infinoid well, the pointer value is good... pobject_lives is called with random trash tho
err, a valid base with random trash added to it
good value: 0x7fff1f63cf88 23:16
bad value: 0x7fa416d731ab
23:16 bacek_ joined
Infinoid gonna break in Parrot_CPointer_mark, to see where it gets that value from 23:16
chromatic Is the (PObj *) cast buggy? 23:19
Infinoid is it really a pointer to a pointer? or is it just a pointer?
chromatic As far as I can tell, it's a pointer to a pointer. I read all assignments to it in CPointer and that's what it is. 23:20
That technique doesn't thrill me with glee, but it ought to work.
Infinoid ok, misunderstanding on my part then. 0x7fff1f63cf88 points to a pointer whose value is 0x7fa416d731ab 23:21
gotta add another * to my watchpoint.
cotto t/pmc/cpointer.t is anemic. Feel free to fatten it up once you understand it well enough. 23:24
Infinoid on the 4th or 5th assignment, it's set to a non-aligned (but still even) value by some assembly code in pmc_new@plt 23:27
that doesn't sound right.
23:30 Limbic_Region joined
Limbic_Region purl msg chromatic thanks for the perl6 meeting minute summaries - I see you are catching up to real time. 23:31
purl Message for chromatic stored.
Limbic_Region particle ping 23:33
chromatic I should be up to date by Thursday.
Limbic_Region well, I know it is a mostly thankless task 23:34
chromatic True. 23:35
23:35 jrockway joined
Limbic_Region but with my freelance gig consuming 15 to 20 hours a week, my full time job, and 2 little ones at home - I don't have any other way to keep up with what's going on 23:35
so I for one appreciate it
nopaste "Infinoid" at 96.238.213.50 pasted "corrupt PMC and where it was assigned from" (306 lines) at nopaste.snit.ch/14293 23:36
Infinoid I did some subsequent snooping around (rather spammy) and saw that the CPointer PMC and its pointer attribute are still intact and still pointing to the right place. 23:37
its a shame gdb doesn't support reverts and snapshots. 23:39
chromatic 0x00007f324568313e in Parrot_gt_p_ic_ic (cur_opcode=0x1517628,
interp=0x13bd080) at src/ops/cmp.ops:430
Infinoid 430 PMC *temp = pmc_new(interp, enum_class_Integer); 23:40
chromatic Want a crazy guess?
Infinoid sure
Whiteknight i like crazy
chromatic Something's not marking the CPointer PMC properly and it's getting GCd and reused and we're seeing its guts getting reassigned out from under it.
Infinoid Parrot_CPointer_mark was called for this instance, right before the crash 23:41
cotto Should t/distro/test_file_coverage.t care if there are t/pmc/*.t files with names that don't match PMCs?
It seems like the only concern should be PMCs without test files, not vice versa.
chromatic Hm, that does shoot down most of my crazy guess.
cotto, I agree.
Infinoid I can check the PMC flags... which flags should I check for? 23:42
cotto thanks.
chromatic If it gets GCd, its vtable should get set to 0xdeadbeef.
Which reduces the likelihood of anything ever calling its mark.
Now its PMC_EXT might get recycled accidentally, but that's unlikely too. 23:43
Infinoid nope, vtable and data values still look unchanged
the CPointer PMC is still intact, and so is attributes.pointer 23:44
but the bounce pointer pointed to by attributes.pointer has been overwritten
by what looks like some runtime linking code, or whatever the assembly in pmc_new@plt is doing
chromatic Are we allocating the pointer to the pointer on the stack, and running into the concomitant problem there? 23:45
Infinoid the first pointer is contained within the attributes structure, allocated by malloc() via mem_sys_allocate() 23:46
chromatic This seems like one place where a union does make sense though.
Infinoid the second level pointer came from somewhere, I didn't do a backtrace there. I'll run through it again 23:47
oh, it's still in Parrot_build_sig_object_from_varargs() 23:51
its a PMC, one of the varargs params, gonna take some more digging to figure out how it was allocated. 23:54
but the PMC's vtable pointer is set to 0x9040000000000000, which seems unlikely 23:58
chromatic Very unlikely.
It's probably not a PMC, just something cast to a PMC. 23:59