Parrot 4.6.0 "Wild Parrots of Telegraph Hill" | parrot.org/ | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 18 July 2012.
benabik var view = packfile.view(); cry(typeof(view), ' ', view); # Integer 7 00:00
whiteknight yeouch 00:08
can you fire up the debugger and set a breakpoint on Parrot_pf_get_packfile_pmc? 00:09
benabik oh hey.
Called from packfile.view? 00:10
Or rather Packfile_nci_view ?
point has broken. 00:11
Although this is an optimized build so debugging might get wacky.
Maybe I should try with debugging information in.
benabik rebuilds Parror 00:12
*parrot
whiteknight yeah, I want to see if pf->view is set there, and if so what it is 00:21
because that pointer should only be a PackfileView
benabik $1 = (PMC *) 0x0 00:22
whiteknight ok, so that's not terrible 00:24
run all the way to the end of that function and make sure pf->view becomes a PackfileView and the return value ptr is a view 00:25
benabik Uhm. It's definitely a PMC... 00:26
How do I determine type?
whiteknight pmc->vtable->whoami 00:33
dalek kudo/nom: eb6c7d4 | (Geoffrey Broadwell)++ | src/core/Str.pm:
Fix off-by-one in one of the Str.Numeric error messages
00:36
kudo/nom: c91826d | (Geoffrey Broadwell)++ | src/core/Str.pm:
Support complex numbers (including pure imaginary numbers) in Str.Numeric
rrot: 1403dd4 | Whiteknight++ | / (3 files):
Add a packfile api function Parrot_pf_all_tags_list function, to return an RSA of all tags in the packfile. Expose this through the all_tags() method on the PackfileView PMC. Add some missing docs. benabik++ for the suggestion
00:37
rrot: 26ed783 | Whiteknight++ | / (3 files):
Move the logic from PackfileView.all_subs() to a new pf api routine Parrot_pf_all_subs, to try and keep all logic in the api and out of the pmc
rrot: a381589 | Whiteknight++ | / (3 files):
Add a new pf api function Parrot_pf_all_tagged_pmcs. This returns a hash of tag->pmcs, for all tagged pmcs in the packfile. Expose this through the PackfileView.all_tagged_pmcs.
whiteknight those things need some tests 00:39
but they're in
benabik whiteknight: p ptr->vtable->whoami = (STRING *) 0x10202dbc8
whiteknight try p ptr->vtable->whoami->strstart 00:40
benabik PackfileView \\o/
whiteknight yay
okay, so continuing on, is it then not a PackfileView when the method returns? 00:41
benabik Sorry, baby interruption. 00:50
Huh. 00:52
Seems to be a view at the return call, but it eventually prints 7 anyway.
Lemme see what I'm doing with this thing.
Not sure how to follow the value after the return. 00:55
seems to become 7 somewhere between the C code and the PIR. 01:00
if ( !(view instanceof 'PackfileView') ) die('7?!?!?'); 01:02
Huh. Decompiling Test/More.pbc gives me a PackfileView but "Null or invalid PackFile" when calling main_sub 01:03
whiteknight hm 01:04
benabik Smells like corruption.
PackFile * const pf = (PackFile*)VTABLE_get_pointer(INTERP, attrs->directory); 01:05
Why attrs->directory?
And why get_pointer? 01:06
whiteknight because shut up. That's why 01:10
sorry
the directory is the thingy that holds all the segments together
benabik Right.
Seeing it nwo.
whiteknight and the pointer because we're at raw structs here, not pmcs
the pmcs are just post-factor wrappers for the structs
benabik And Directory.get_pointer will create a Packfile if it doesn't have one apparently. 01:11
whiteknight does it?
benabik According to docs? 01:12
Actually...
It appears to create a new packfile no matter what.
whiteknight a new Packfile PMC, or a new packfile*? 01:13
benabik PackFile*
Holdon... 01:15
But this changes ownership of segments to the new PackFile. What does that do to any old PackFile references?
I don't think this is a particularly safe thing to call on a directory for an existing Packfile
whiteknight yes, this is all sounding sub-optimal 01:29
dalek rrot: 5f0fd0c | Whiteknight++ | docs/project/release_manager_guide.pod:
Remove rurban++ from the list of upcoming release managers. his release is already done.
01:31
rrot: 74d8fbf | Whiteknight++ | ChangeLog:
add mention of new PackfileView methods to ChangeLog
rrot: 5dab665 | Whiteknight++ | src/pmc/packfileview.pmc:
A few small cleanups and doc improvements for PackfileView PMC
01:42
whiteknight bleh 01:45
okay, so calling Packfile.view() does create a new PackFile structure, which does make some sense. 01:48
and Parrot_pf_get_packfile_pmc sets pf->view correctly
because once the PackfileView has been created, the packfile is assumed to be static and read-only 01:49
so it makes sense to give it a copy
what doesn't make sense is that you're getting something that isn't a view from that method 01:51
msg nine I am getting threads failures on my winxp box. The list of failures changes each time I run, and the failures look weird (perl tests with non-zero exits, tests running out of order, etc). Is probably a problem with my kit. 01:52
aloha OK. I'll deliver the message.
01:53 benabik joined
benabik I'm confused because somewhere between set_return(view) in C and typeof(view) in PIR it's changing. 01:55
It really feels like corruption somewhere because what it is changes based on what PBC I'm disassembling. 01:56
whiteknight hm 01:57
dalek rrot: 92d8d2b | Whiteknight++ | src/pmc/packfile.pmc:
document the Packfile.view method
benabik whiteknight: PACT/main_sub has the offending code
(dalek should notice soon) 01:58
dalek CT/main_sub: fcd101f | benabik++ | src/ (2 files):
WIP: main sub

Currently, I'm not always getting a PackfileView back, and when I do it seems to be corrupted.
whiteknight I haven't updated this in a while
sorear what is the relationship between PACT and QAST? 02:00
benabik sorear: Basically none, other than they're both starting from "PCT isn't good enough" 02:01
sorear: QAST is using 6model to gain a lot of memory efficiency.
whiteknight eventually PACT will be using 6model too, if I can ever get that into parrot 02:04
that's the next project I start on, if I can get either threads or whiteknight/io_cleanup1 merged 02:05
benabik sorear: Right now PACT is working "replacing PIR", not "replacing PAST" which is what QAST is. (jnthn is also working on PIRT which replaces POST, IIRC)
whiteknight but I refuse to have three branches, of such large size, floating in the air simultaneously
anyway, it's way past my bedtime. I'm out. Later 02:06
benabik I'm trying to making type notations in PACT so I can convert to typed attributes if we get 6model into core. Not storing integers in full PMCs goes a long way towards efficiency. 02:07
02:25 benabik joined 02:36 JimmyZ joined
JimmyZ what is the relationship between PACT and m1/m0 ? 02:37
benabik Also basically nothing. PACT is working on the "high level" bytecode level, which AFAIK is supposed to be more-or-less untouched on top of M0 02:38
That said, I do want to make the higher levels of PACT more generic so they might be able to compile down to a PACT.MZero structure or something. 02:39
JimmyZ 'oh 02:53
yes, bytocode
*bytecode
02:59 benabik_ joined 04:16 wendar joined 05:49 nopaste joined 05:53 TonyC joined 06:11 brrt joined 06:13 nopaste joined
dalek d_parrot/sub-eval: 19ca2d3 | (Bart Wiegmans)++ | / (10 files):
The Great Reorganisaton is on its way. Loaders are next
06:27
d_parrot/sub-eval: d77a6eb | (Bart Wiegmans)++ | module/mod_parrot_pool. (2 files):
Delete redundant file
06:28
07:14 brrt joined
dalek kudo/nom: 4e14470 | moritz++ | src/Perl6/Actions.pm:
simplify code from commit 34e8d4d8, felher++
07:49
07:59 lucian joined 09:23 nopaste joined 09:33 LizM joined, woolfy joined 11:00 brrt left 11:11 JimmyZ joined 12:38 nopaste joined 13:19 bluescreen joined
rurban nine, whiteknight: sleep on Win32 and cygwin is unreliable. deadlock with signals (do not know which yet). probably the same problem as with nci. 13:56
14:07 preflex_ joined
dalek rrot/threads: 5342d65 | Whiteknight++ | src/scheduler.c:
Several small cleanups, comments and a few TODO notes in scheduler.c. No functional changes
14:08
rrot/threads: d752612 | nine++ | / (2 files):
Unshare runloop_id_counter to fix races

runloop_id_counter should be local to the interp instead of global. There's no reason to share it between threads. Leaving it global was an oversight.
rrot/threads: ce49c6c | Whiteknight++ | src/pmc/alarm.pmc:
Cleanup Alarm PMC. Add some comments/docs. Cleanup some code. Add the ability to get the alarm time as a PMC from get_pmc_keyed_int, in case anybody wants to try that.
rrot/threads: 57cee73 | Whiteknight++ | src/pmc/scheduler (2 files):
A few small cleanups to scheduler and schedulermessage PMCs. No functional changes
rrot/threads: 56c96dd | rurban++ | t/pmc/nci.t:
[GH #808] Remove sleep calls in nci.t, because of signal deadlocks with parrot threads

Even without sleep calls the tests succeed. But since it loops until the resuilt arrives, let it busy loop a bit longer. Note: This is a hack. sleep on threads should be fixed instead.
rurban I had to rebase the threads related commits into the threads branch. 14:09
14:12 brrt joined 14:14 brrt joined
brrt if anyone cares 14:15
i might get my hands on a ppc
darwin + ppc
rurban powerbook G4 or G5? I've got a G4. It's heavy 14:18
brrt a mac mini :-)
JimmyZ aloha 14:19
rurban better. But I don't think you'll need it for parrot.
14:19 dmalcolm joined
brrt it'll be fun still 14:20
rurban Get a Mac Air, this is fun. 14:24
and 7 hrs battery time
brrt if tuition wasn't killing me financially i would
also, do mac people who are also hacking people.. run linux or os x on their machines? 14:28
benabik OS X
brrt really?
tadzik I was surprised too
"wow, serious people use macs" 14:29
benabik I don't really see any advantage to running Linux on it, honestly.
brrt ... i'd almost say 'superior interface'
tadzik :>
brrt but, in honesty, its tooling for me
rurban you can build a hackintosh
benabik sure...
tadzik but you're spending 90% of time in vim anyway, so...
rurban just some bios hack needed (EFI)
benabik Only advice I might have is to reformat the main drive to be case sensitive. 14:30
brrt honestly, the gnome 3 interface is quite good
benabik I haven't, but it causes pain from time to time.
rurban gnome 3? I went back to xfce out of disgust
tadzik s/xfce/kde/r, me too 14:31
their workflow is not my workflow
I even talked to the devs shortly after release
"we are not going to add configuration options just for the sake of adding them" about sums it up
brrt fair enough
yeah, i kind of miss configuration options too
14:31 bluescreen joined
brrt but where it works it works really well 14:32
(as a sidenote, has anyone here experience with a structview for a struct containing cstrings?)
Coke I have an macbook air for work, so I can't install linux on it, but I find I hae no need to. 14:33
tadzik it's mostly unix, so it's mostly fine :)
I guess. I never had a mac
brrt my number one annoyance 14:34
benabik It's mostly BSD, technically.
brrt find doesn't assume the current directory
you must always explicitly type find dot (expression)
benabik Does GNU find assume . ? 14:35
tadzik if no other options are used, yes
"find" works, "find -name" doesn't, iirc
rurban lots of gnuisms missing on bsd's, yes annoying 14:36
benabik I had a few GNU utilities installed via fink. 14:37
I don't know if they're in homebrew.
rurban but solaris is even more annoying
benabik But you can always download and install it in /usr/local (or /opt/gnu or whatever) yourself.
Solaris is a nightmare.
Literally. I have nightmares about it. 14:38
;-)
tadzik :)
rurban I think I'll rename [GH #808] to "threads: sleep deadlocks". The nci tests are only the tip of the iceberg. 14:39
Coke "why, I remember sunos. quitcher complaining, youngster." 14:40
rurban Is nine or whiteknight around? I want to state in GH #808 that: "There's a design limitation that only one signal can be accepted per thread. I assume the sleep thread blocks signals which arrive during the sleep, and the sleep loop never finishes." 14:43
I would say threads is not ready yet to merge. now t/op/time.t hangs on darwin/ppc and windows and cygwin. 14:48
I'll go on to io_cleanup1
brrt .. c strings and structivew, doesn't work? 14:52
14:54 dmalcolm joined
brrt fair enough 15:09
i work arround it
benabik I've never used structview.
brrt don't 15:11
they're useless :-p
or, in other words
a CString PMC would be very Handy 15:12
dalek kudo/nom: 8f97220 | (Felix Herrmann)++ | src/binder/multidispatch.c:
fix issue in binder/multidispatch.c where A is narrower than B is narrower than A

Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
15:16
rurban cygwin failures for threads smolder.parrot.org/app/projects/rep...ails/30529 16:13
16:53 tuxit joined
dalek kudo/nom: e5e9e79 | moritz++ | src/core/Num.pm:
make Num.new better suitable for subclassing. japhb++ and sorear++
16:54
17:17 alvis joined
allison alvis: you should have admin access on the old blog 17:52
alvis: (I mean, you *do* have admin access now, so check that it's working)
18:29 lucian joined 18:37 bluescreen joined 18:56 dukeleto joined 19:22 bluescreen joined 20:19 benabik joined
nine rurban: if there's a race in the timer thread, it's no wonder that sleep and alarm tests are failing randomly. Would be great if someone with actual pthreads experience could have a look at my timer thread implementation. That's my first pthreads work after all... 20:21
dalek kudo/nom: cb065c8 | moritz++ | src/core/control.pm:
avoid a vtable call in get_integer
20:22
rurban nine: I see. I could not find another race in the timer thread, just signals are either not arriving or blocking the sleep and there's a for sure deadlock. Maybe whiteknight can help out. 20:33
20:39 PacoAir joined
nine But I still wonder why I cannot reproduce any failures locally. 20:42
rurban: if you'd have one qemu image for me in which I could reproduce failures, that would help tremendously 20:44
rurban tsan did not help? worked fine for me to repro with tsan on a fast linux 64bit.
nine oh, I forgot about that. Will try right away 20:45
rurban That's why I wrote my blog entry
Coke rurban++ 20:53
nine rurban: with tsan I can reproduce the task.t hang, but I cannot find how to get a useful stacktrace at that point. 21:00
rurban gdb into the ps id? 21:01
nine rurban: that gives me only some valgrind functions 21:46
rurban uploaded to perl514.cpanel.net/qemu/ do you see that? 21:47
in the tar are a README, the starter, the bios and the image
nine Excellent! Downloading...
rurban 511MB only 21:48
nine I have a Core i7 webserver at Hetzner which is idling along all day. Thinking about hosting such VMs for parrot devs to play around with 21:49
21:51 PacoAir_ joined
rurban Then you'd need to change networking to bridge mode. 21:52
22:09 PacoAir joined 22:22 PacoAir_ joined
rurban now also perl514.cpanel.net/qemu/powerpc/ 22:28
nine Good night 22:52
22:52 whiteknight joined
whiteknight good evening, #parrot 23:04
benabik o/ whiteknight
whiteknight hello benabik 23:05
23:29 PacoAir_ joined 23:47 kid51 joined
dalek rrot: 81ed05e | jkeenan++ | / (3 files):
[codingstd] Conform to linelength, C parens, C args asserts, etc.
23:51