Camelia, the Perl 6 bug

IRC log for #parrot, 2012-08-10

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 benabik var view = packfile.view(); cry(typeof(view), ' ', view); # Integer 7
00:08 whiteknight yeouch
00:09 whiteknight can you fire up the debugger and set a breakpoint on Parrot_pf_get_packfile_pmc?
00:09 benabik oh hey.
00:10 benabik Called from packfile.view?
00:10 benabik Or rather Packfile_nci_view ?
00:11 benabik point has broken.
00:11 benabik Although this is an optimized build so debugging might get wacky.
00:11 benabik Maybe I should try with debugging information in.
00:12 * benabik rebuilds Parror
00:12 benabik *parrot
00:21 whiteknight yeah, I want to see if pf->view is set there, and if so what it is
00:21 whiteknight because that pointer should only be a PackfileView
00:22 benabik $1 = (PMC *) 0x0
00:24 whiteknight ok, so that's not terrible
00:25 whiteknight 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:26 benabik Uhm.  It's definitely a PMC...
00:26 benabik How do I determine type?
00:33 whiteknight pmc->vtable->whoami
00:36 dalek rakudo/nom: eb6c7d4 | (Geoffrey Broadwell)++ | src/core/Str.pm:
00:36 dalek rakudo/nom: Fix off-by-one in one of the Str.Numeric error messages
00:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/eb6c7d47c5
00:36 dalek rakudo/nom: c91826d | (Geoffrey Broadwell)++ | src/core/Str.pm:
00:36 dalek rakudo/nom: Support complex numbers (including pure imaginary numbers) in Str.Numeric
00:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c91826dace
00:37 dalek parrot: 1403dd4 | Whiteknight++ | / (3 files):
00:37 dalek parrot: 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 dalek parrot: review: https://github.com/parrot/parrot/commit/1403dd4f41
00:37 dalek parrot: 26ed783 | Whiteknight++ | / (3 files):
00:37 dalek parrot: 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
00:37 dalek parrot: review: https://github.com/parrot/parrot/commit/26ed783545
00:37 dalek parrot: a381589 | Whiteknight++ | / (3 files):
00:37 dalek parrot: 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.
00:37 dalek parrot: review: https://github.com/parrot/parrot/commit/a3815891b6
00:39 whiteknight those things need some tests
00:39 whiteknight but they're in
00:39 benabik whiteknight: p ptr->vtable->whoami = (STRING *) 0x10202dbc8
00:40 whiteknight try p ptr->vtable->whoami->strstart
00:40 benabik PackfileView \o/
00:40 whiteknight yay
00:41 whiteknight okay, so continuing on, is it then not a PackfileView when the method returns?
00:50 benabik Sorry, baby interruption.
00:52 benabik Huh.
00:52 benabik Seems to be a view at the return call, but it eventually prints 7 anyway.
00:52 benabik Lemme see what I'm doing with this thing.
00:55 benabik Not sure how to follow the value after the return.
01:00 benabik seems to become 7 somewhere between the C code and the PIR.
01:02 benabik if ( !(view instanceof 'PackfileView') )            die('7?!?!?');
01:03 benabik Huh.  Decompiling Test/More.pbc gives me a PackfileView but "Null or invalid PackFile" when calling main_sub
01:04 whiteknight hm
01:04 benabik Smells like corruption.
01:05 benabik PackFile * const pf = (PackFile*)VTABLE_get_pointer(INTERP, attrs->directory);
01:05 benabik Why attrs->directory?
01:06 benabik And why get_pointer?
01:10 whiteknight because shut up. That's why
01:10 whiteknight sorry
01:10 whiteknight the directory is the thingy that holds all the segments together
01:10 benabik Right.
01:10 benabik Seeing it nwo.
01:10 whiteknight and the pointer because we're at raw structs here, not pmcs
01:10 whiteknight the pmcs are just post-factor wrappers for the structs
01:11 benabik And Directory.get_pointer will create a Packfile if it doesn't have one apparently.
01:11 whiteknight does it?
01:12 benabik According to docs?
01:12 benabik Actually...
01:12 benabik It appears to create a new packfile no matter what.
01:13 whiteknight a new Packfile PMC, or a new packfile*?
01:13 benabik PackFile*
01:15 benabik Holdon...
01:15 benabik But this changes ownership of segments to the new PackFile.  What does that do to any old PackFile references?
01:15 benabik I don't think this is a particularly safe thing to call on a directory for an existing Packfile
01:29 whiteknight yes, this is all sounding sub-optimal
01:31 dalek parrot: 5f0fd0c | Whiteknight++ | docs/project/release_manager_guide.pod:
01:31 dalek parrot: Remove rurban++ from the list of upcoming release managers. his release is already done.
01:31 dalek parrot: review: https://github.com/parrot/parrot/commit/5f0fd0c746
01:31 dalek parrot: 74d8fbf | Whiteknight++ | ChangeLog:
01:31 dalek parrot: add mention of new PackfileView methods to ChangeLog
01:31 dalek parrot: review: https://github.com/parrot/parrot/commit/74d8fbfbe5
01:42 dalek parrot: 5dab665 | Whiteknight++ | src/pmc/packfileview.pmc:
01:42 dalek parrot: A few small cleanups and doc improvements for PackfileView PMC
01:42 dalek parrot: review: https://github.com/parrot/parrot/commit/5dab665abe
01:45 whiteknight bleh
01:48 whiteknight okay, so calling Packfile.view() does create a new PackFile structure, which does make some sense.
01:48 whiteknight and Parrot_pf_get_packfile_pmc sets pf->view correctly
01:49 whiteknight because once the PackfileView has been created, the packfile is assumed to be static and read-only
01:49 whiteknight so it makes sense to give it a copy
01:51 whiteknight what doesn't make sense is that you're getting something that isn't a view from that method
01:52 whiteknight 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 #parrot
01:55 benabik I'm confused because somewhere between set_return(view) in C and typeof(view) in PIR it's changing.
01:56 benabik It really feels like corruption somewhere because what it is changes based on what PBC I'm disassembling.
01:57 whiteknight hm
01:57 dalek parrot: 92d8d2b | Whiteknight++ | src/pmc/packfile.pmc:
01:57 dalek parrot: document the Packfile.view method
01:57 dalek parrot: review: https://github.com/parrot/parrot/commit/92d8d2bede
01:57 benabik whiteknight: PACT/main_sub has the offending code
01:58 benabik (dalek should notice soon)
01:58 dalek PACT/main_sub: fcd101f | benabik++ | src/ (2 files):
01:58 dalek PACT/main_sub: WIP: main sub
01:58 dalek PACT/main_sub:
01:58 dalek PACT/main_sub: Currently, I'm not always getting a PackfileView back, and when I do
01:58 dalek PACT/main_sub: it seems to be corrupted.
01:58 dalek PACT/main_sub: review: https://github.com/parrot/PACT/commit/fcd101f35c
01:58 whiteknight I haven't updated this in a while
02:00 sorear what is the relationship between PACT and QAST?
02:01 benabik sorear: Basically none, other than they're both starting from "PCT isn't good enough"
02:01 benabik sorear: QAST is using 6model to gain a lot of memory efficiency.
02:04 whiteknight eventually PACT will be using 6model too, if I can ever get that into parrot
02:05 whiteknight 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)
02:05 whiteknight but I refuse to have three branches, of such large size, floating in the air simultaneously
02:06 whiteknight anyway, it's way past my bedtime. I'm out. Later
02:07 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:25 benabik joined #parrot
02:36 JimmyZ joined #parrot
02:37 JimmyZ what is the relationship between PACT and m1/m0 ?
02:38 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:39 benabik 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:53 JimmyZ 'oh
02:53 JimmyZ yes, bytocode
02:53 JimmyZ *bytecode
02:59 benabik_ joined #parrot
04:16 wendar joined #parrot
05:49 nopaste joined #parrot
05:53 TonyC joined #parrot
06:11 brrt joined #parrot
06:13 nopaste joined #parrot
06:27 dalek mod_parrot/sub-eval: 19ca2d3 | (Bart Wiegmans)++ | / (10 files):
06:27 dalek mod_parrot/sub-eval: The Great Reorganisaton is on its way. Loaders are next
06:27 dalek mod_parrot/sub-eval: review: https://github.com/bdw/mod​_parrot/commit/19ca2d3a08
06:28 dalek mod_parrot/sub-eval: d77a6eb | (Bart Wiegmans)++ | module/mod_parrot_pool. (2 files):
06:28 dalek mod_parrot/sub-eval: Delete redundant file
06:28 dalek mod_parrot/sub-eval: review: https://github.com/bdw/mod​_parrot/commit/d77a6eba27
07:14 brrt joined #parrot
07:49 dalek rakudo/nom: 4e14470 | moritz++ | src/Perl6/Actions.pm:
07:49 dalek rakudo/nom: simplify code from commit 34e8d4d8, felher++
07:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4e144704d4
07:59 lucian joined #parrot
09:23 nopaste joined #parrot
09:33 LizM joined #parrot
09:33 woolfy joined #parrot
11:00 brrt left #parrot
11:11 JimmyZ joined #parrot
12:38 nopaste joined #parrot
13:19 bluescreen joined #parrot
13:56 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.
14:07 preflex_ joined #parrot
14:08 dalek parrot/threads: 5342d65 | Whiteknight++ | src/scheduler.c:
14:08 dalek parrot/threads: Several small cleanups, comments and a few TODO notes in scheduler.c. No functional changes
14:08 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/5342d65196
14:08 dalek parrot/threads: d752612 | nine++ | / (2 files):
14:08 dalek parrot/threads: Unshare runloop_id_counter to fix races
14:08 dalek parrot/threads:
14:08 dalek parrot/threads: runloop_id_counter should be local to the interp instead of global.
14:08 dalek parrot/threads: There's no reason to share it between threads. Leaving it global was an oversight.
14:08 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/d752612c98
14:08 dalek parrot/threads: ce49c6c | Whiteknight++ | src/pmc/alarm.pmc:
14:08 dalek parrot/threads: 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.
14:08 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/ce49c6cd55
14:08 dalek parrot/threads: 57cee73 | Whiteknight++ | src/pmc/scheduler (2 files):
14:08 dalek parrot/threads: A few small cleanups to scheduler and schedulermessage PMCs. No functional changes
14:08 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/57cee73e09
14:08 dalek parrot/threads: 56c96dd | rurban++ | t/pmc/nci.t:
14:08 dalek parrot/threads: [GH #808] Remove sleep calls in nci.t, because of signal deadlocks with parrot threads
14:08 dalek parrot/threads:
14:08 dalek parrot/threads: Even without sleep calls the tests succeed. But since it loops until the resuilt arrives, let
14:08 dalek parrot/threads: it busy loop a bit longer.
14:08 dalek parrot/threads: Note: This is a hack. sleep on threads should be fixed instead.
14:08 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/56c96dde25
14:09 rurban I had to rebase the threads related commits into the threads branch.
14:12 brrt joined #parrot
14:14 brrt joined #parrot
14:15 brrt if anyone cares
14:15 brrt i might get my hands on a ppc
14:15 brrt darwin + ppc
14:18 rurban powerbook G4 or G5? I've got a G4. It's heavy
14:18 brrt a mac mini :-)
14:19 JimmyZ aloha
14:19 rurban better. But I don't think you'll need it for parrot.
14:19 dmalcolm joined #parrot
14:20 brrt it'll be fun still
14:24 rurban Get a Mac Air, this is fun.
14:24 rurban and 7 hrs battery time
14:24 brrt if tuition wasn't killing me financially i would
14:28 brrt also, do mac people who are also hacking people.. run linux or os x on their machines?
14:28 benabik OS X
14:28 brrt really?
14:28 tadzik I was surprised too
14:29 tadzik "wow, serious people use macs"
14:29 benabik I don't really see any advantage to running Linux on it, honestly.
14:29 brrt ... i'd almost say 'superior interface'
14:29 tadzik :>
14:29 brrt but, in honesty, its tooling for me
14:29 rurban you can build a hackintosh
14:29 benabik sure...
14:29 tadzik but you're spending 90% of time in vim anyway, so...
14:29 rurban just some bios hack needed (EFI)
14:30 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
14:30 benabik I haven't, but it causes pain from time to time.
14:30 rurban gnome 3? I went back to xfce out of disgust
14:31 tadzik s/xfce/kde/r, me too
14:31 tadzik their workflow is not my workflow
14:31 tadzik I even talked to the devs shortly after release
14:31 tadzik "we are not going to add configuration options just for the sake of adding them" about sums it up
14:31 brrt fair enough
14:31 brrt yeah, i kind of miss configuration options too
14:31 bluescreen joined #parrot
14:32 brrt but where it works it works really well
14:32 brrt (as a sidenote, has anyone here experience with a structview for a struct containing cstrings?)
14:33 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 :)
14:33 tadzik I guess. I never had a mac
14:34 brrt my number one annoyance
14:34 benabik It's mostly BSD, technically.
14:34 brrt find doesn't assume the current directory
14:34 brrt you must always explicitly type find dot (expression)
14:35 benabik Does GNU find assume . ?
14:35 tadzik if no other options are used, yes
14:35 tadzik "find" works, "find -name" doesn't, iirc
14:36 rurban lots of gnuisms missing on bsd's, yes annoying
14:37 benabik I had a few GNU utilities installed via fink.
14:37 benabik I don't know if they're in homebrew.
14:37 rurban but solaris is even more annoying
14:37 benabik But you can always download and install it in /usr/local (or /opt/gnu or whatever) yourself.
14:37 benabik Solaris is a nightmare.
14:38 benabik Literally.  I have nightmares about it.
14:38 benabik ;-)
14:38 tadzik :)
14:39 rurban I think I'll rename [GH #808] to "threads: sleep deadlocks". The nci tests are only the tip of the iceberg.
14:40 Coke "why, I remember sunos. quitcher complaining, youngster."
14:43 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:48 rurban 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 rurban I'll go on to io_cleanup1
14:52 brrt .. c strings and structivew, doesn't work?
14:54 dmalcolm joined #parrot
15:09 brrt fair enough
15:09 brrt i work arround it
15:09 benabik I've never used structview.
15:11 brrt don't
15:11 brrt they're useless :-p
15:11 brrt or, in other words
15:12 brrt a CString PMC would be very Handy
15:16 dalek rakudo/nom: 8f97220 | (Felix Herrmann)++ | src/binder/multidispatch.c:
15:16 dalek rakudo/nom: fix issue in binder/multidispatch.c where A is narrower than B is narrower than A
15:16 dalek rakudo/nom:
15:16 dalek rakudo/nom: Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
15:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8f97220745
16:13 rurban cygwin failures for threads http://smolder.parrot.org/app/​projects/report_details/30529
16:53 tuxit joined #parrot
16:54 dalek rakudo/nom: e5e9e79 | moritz++ | src/core/Num.pm:
16:54 dalek rakudo/nom: make Num.new better suitable for subclassing. japhb++ and sorear++
16:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e5e9e79e12
17:17 alvis joined #parrot
17:52 allison alvis: you should have admin access on the old blog
17:52 allison alvis: (I mean, you *do* have admin access now, so check that it's working)
18:29 lucian joined #parrot
18:37 bluescreen joined #parrot
18:56 dukeleto joined #parrot
19:22 bluescreen joined #parrot
20:19 benabik joined #parrot
20:21 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:22 dalek rakudo/nom: cb065c8 | moritz++ | src/core/control.pm:
20:22 dalek rakudo/nom: avoid a vtable call in get_integer
20:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cb065c87ed
20:33 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:39 PacoAir joined #parrot
20:42 nine But I still wonder why I cannot reproduce any failures locally.
20:44 nine 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.
20:45 nine oh, I forgot about that. Will try right away
20:45 rurban That's why I wrote my blog entry
20:53 Coke rurban++
21:00 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:01 rurban gdb into the ps id?
21:46 nine rurban: that gives me only some valgrind functions
21:47 rurban uploaded to http://perl514.cpanel.net/qemu/ do you see that?
21:47 rurban in the tar are a README, the starter, the bios and the image
21:47 nine Excellent! Downloading...
21:48 rurban 511MB only
21:49 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:51 PacoAir_ joined #parrot
21:52 rurban Then you'd need to change networking to bridge mode.
22:09 PacoAir joined #parrot
22:22 PacoAir_ joined #parrot
22:28 rurban now also http://perl514.cpanel.net/qemu/powerpc/
22:52 nine Good night
22:52 whiteknight joined #parrot
23:04 whiteknight good evening, #parrot
23:04 benabik o/ whiteknight
23:05 whiteknight hello benabik
23:29 PacoAir_ joined #parrot
23:47 kid51 joined #parrot
23:51 dalek parrot: 81ed05e | jkeenan++ | / (3 files):
23:51 dalek parrot: [codingstd] Conform to linelength, C parens, C args asserts, etc.
23:51 dalek parrot: review: https://github.com/parrot/parrot/commit/81ed05e5f0

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced