Camelia, the Perl 6 bug

IRC log for #parrot, 2008-04-27

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:11 shamu joined #parrot
00:20 Limbic_Region joined #parrot
01:28 Theory joined #parrot
02:08 tetragon Got the backtrace working with dladdr on OS X
02:09 tetragon I'm having some difficulty in getting Linux to play nice with my (non-parrot) test code for it.
02:10 Andy joined #parrot
02:17 nopaste "tetragon" at 69.196.138.185 pasted "Nifty backtrace patch that uses dladdr. Not tested on non-OS X 10.5" (46 lines) at http://nopaste.snit.ch/12834
02:24 * Debolaz watches perl6.pmc and his nifty little test script make parrot crash and burn
02:25 PerlJam What's perl6.pmc ?
02:26 Debolaz s/pmc/pbc/
02:26 Debolaz When I encounter such things, where do I send the information and what exactly do I include in the report aside from the test script?
02:50 Tene Debolaz: it's polite to also send the output, a backtrace if you can get it, all the information you can get.
02:51 Tene purl: parrotbug
02:51 purl i think parrotbug is mailto:parrotbug@parrotcode.org or http://svn.perl.org/parrot/​trunk/docs/submissions.pod
02:51 dalek r27199 | infinoid++ | trunk:
02:51 dalek : [src] Add autogenerated file glut_callbacks.c to svn:ignore.
02:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27199
02:56 Infinoid tetragon: works fine on linux/amd64/ no warnings, output is about the same as the parse-backtrace_symbols() version
02:56 tetragon Oh good
02:56 tetragon Some of my Linux i386 tests were crashing without additional checks
02:56 tetragon I'll stick them in and retest/repost
02:57 Infinoid only difference in output is the unknown symbols have transformed from "(unknown)" to "(null)"
02:57 Infinoid we're going to need to probe for dladdr() tho... I bet win32 doesn't have it.
02:57 dalek r27200 | chromatic++ | trunk:
02:57 tetragon I think that may be a difference between glibcs/platforms
02:57 dalek : [GC] Fixed PMC_EXT allocation/deallocation.
02:58 dalek : PMC_EXT structures are *not* isomorphic with the PObj structure.  Treating it
02:58 dalek : as such was an unnecessary hack that is now gone.  There is one smaller hack in
02:58 dalek : the revised version, but it's part of the free list pointer hack that's already
02:58 dalek : in the code, and it's much better than the troublesome casting and
02:58 dalek : bit-twiddling necessary to treat PMC_EXT headers and PObj headers somewhat
02:58 dalek : interchangeably.
02:58 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27200
02:58 tetragon I've encountered differences in behaviour in standard functions between i386 and amd64 before
02:58 Infinoid I can test on linux/i686 if needed
02:59 Infinoid actually, the readability of stack backtraces will vary depending on compiler version and options, too
02:59 tetragon I think the amd64 one adds in (null) as my i386 tests just segfault if I don't explicitly test first
02:59 Infinoid no, that's a feature of later glibc versions, it does that when you try to printf("%s") a NULL pointer
02:59 Infinoid I've seen it on x86 too
02:59 tetragon Hrm
03:00 tetragon Well, my i386 test box doesn't have that behaviour
03:00 tetragon So I'm adding in an explicit test
03:00 Infinoid please do :)
03:01 Infinoid its nice to have, but you can't rely on it
03:02 nopaste "tetragon" at 69.196.138.185 pasted "Now with an added NULL pointer check" (46 lines) at http://nopaste.snit.ch/12835
03:04 Infinoid now they're (unknown)s again
03:05 Infinoid diff looks great, but we definitely will need to probe for dladdr(), dlfcn.h and the Dl_info typedef
03:06 tetragon All OS X versions that have backtrace have everything I added (easy to say when there's only one version with backtrace(3))
03:07 Infinoid yeah, OS X does a fairly good job of having the normal POSIXish features
03:07 Infinoid to be honest, it's win32 I'm worried about.
03:07 tetragon I don't have access to that platform
03:08 Infinoid I do.  I'm going to test on mingw as soon as this silly box reboots again
03:08 tetragon One difference between OS X and Linux/glibc for this is that glibc requires that _GNU_SOURCE be defined before dlfcn.h is imported.  OS X lacks that requirement
03:09 Infinoid why, is dladdr considered a GNU extension, or something?
03:09 tetragon The typedef and dladdr are only defined in that case
03:09 tetragon According to the manpage on Linux, it is
03:09 * Infinoid holds his skull painfully
03:10 tetragon Since it worked for you, _GNU_SOURCE is probably defined somewhere
03:10 Infinoid its in CFLAGS in the toplevel Makefile
03:10 tetragon And it was that requirement that was causing me so much grief when it came to a simple test on Linux
03:11 Infinoid added by config/init/hints/linux.pm
03:11 Infinoid it didn't get added on your linux box?
03:12 Infinoid or were you compiling something by hand?
03:12 tetragon Simple test by hand
03:12 Infinoid ok
03:16 tetragon The thing that gets to me is how much shorter the dladdr version of the function is when compared against the backtrace_symbols parsing variant
03:16 Infinoid all right!  I finally figured out how to download a URL from a command prompt
03:17 tetragon wget?
03:17 purl well, wget is http/ftp file retrieval client or a good way to download stuff  or `echo "robots=off" >> ~/.wgetrc` or web 3.0
03:17 Infinoid wget didn't exist, GET didn't exist, but lwp-download.bat does
03:17 Infinoid so now I get to remember where the weird port of the patch command is...
03:18 * tetragon tries to remember enough edlin to see if an ed diff is close enough to work
03:18 Infinoid if I did this more often, I'd get better at it.
03:19 Infinoid building now
03:22 Infinoid no, failing to configure.  *sigh*
03:26 Infinoid ok, I won't be able to test this until monday
03:27 Infinoid (gcc can't create executables after windows explorer has crashed, and I can't do a hard reboot remotely)
03:27 tetragon I've stuck the patch into the ticket
03:28 tetragon (#53402)
03:31 Infinoid cool.
03:31 Infinoid in theory, this shouldn't break anything.  win32 should fail to detect backtrace(), which means all this code should be disabled anyway
03:33 tetragon And all systems I know of with backtrace() have dladdr in dlfcn.h
03:33 Infinoid a lucky coincidence :)
03:34 tetragon And dladdr came to OS X and glibc from Solaris/SunOS
03:35 * tetragon wonders if they have backtrace(3)
03:36 Infinoid http://cvs.opensolaris.org/source/xref/onn​v/onnv-gate/usr/src/head/execinfo.h?r=3988
03:36 tetragon Looks like it may have been recently added
03:37 shorten Infinoid's url is at http://xrl.us/bju78
03:37 tetragon http://ko.opensolaris.org/os/commun​ity/arc/caselog/2007/162/;jsessioni​d=411C86D492AF988809AAA0E8B8B33E8F
03:37 shorten tetragon's url is at http://xrl.us/bju8a
03:38 Andy joined #parrot
03:38 Infinoid opensolaris is moving at surprising speed, considering
03:52 dalek r27201 | chromatic++ | trunk:
03:52 dalek : [GC] Fixed some casts from r27200.
03:52 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27201
04:17 Zaba_ joined #parrot
04:28 teknomunk joined #parrot
04:30 Psyche^ joined #parrot
04:40 tetragon joined #parrot
04:43 tetragon Hey, test 6 of t/dynoplibs/myops.t stopped passing
04:44 Infinoid due to the recent GC changes?  or...
04:44 tetragon The last two output lines are in the wrong order
04:45 Infinoid any chance of finding out why? :)
04:46 Infinoid (I'm unable to reproduce on linux)
04:46 tetragon Hrm... That ordering issue hasn't repeated in the last few times I've run the code
04:47 Infinoid ah, intermittant
04:48 * Infinoid runs 100 of them in a shell loop
04:48 tetragon I've only seen that behaviour once
04:49 Infinoid this "three alarms" thingy is sounding vaguely familiar to me, I think I've seen it a few times too
04:50 slightlyoff joined #parrot
04:52 tetragon Try running the process niced down as far as you can go while building perl6
04:52 tetragon (Or something else to load up your CPU)
04:52 tetragon I can reproduce similar issues in that case
04:52 tetragon (More first couple lines than last pair)
04:53 tetragon I've just gotten a string of 2-1-3 to come out instead of 1-2-3
04:53 tetragon And I just got a 1-3-2
04:53 tetragon It seems like CPU load can cause the test to fall over
04:53 Infinoid tetragon: I was seeing intermittant "three alarms" failures on MSVC/win32 on May 14, 2007
04:54 tetragon And I'm triggering fairly consistent failures on OS X
04:54 Infinoid if your failures have the same cause, its an *old* bug
04:54 tetragon I don't know the win32 cause, but my one seems related to CPU load possibly causing the "sleep 1" to last longer than it should
04:56 Infinoid I think I had patched this at some point to try to spread out the events a little more, but it doesn't look like that ever got committed
04:57 Infinoid 50 passes in a row on amd64, 25 passes in a row on i686 so far
04:57 * Infinoid spawns some forkbombs to see if he can trigger it
05:01 Infinoid that did it.  got a 2-1-3 on linux-i686 with a loadavg of 15.
05:03 tetragon I think the most likely explanation for my first failure would be system load
05:04 Infinoid absolutely.  it's very consistent when loadavg=15
05:04 tetragon My box would have still been dealing with the crash reporter due to the test 3 crash, and the crash reporter is somewhat CPU intense
05:07 Infinoid the test is too timing-dependent.  if there's a way to detect directly whether alarm events have fired, we should do that instead
05:07 Infinoid I'm thinking the three callback functions should add 4, 2, and 1 to a global variable or something
05:08 tetragon It looks like it may also be possible to trigger a test 5 failure using the same technique
05:09 tetragon But it doesn't look likely in practice
05:10 Infinoid that's a much closer shave
05:11 tetragon For that I'd probably have to drop a prebuilt parrot tree onto my Pentium 100
05:12 tetragon And try the test while loading the system down
05:13 Infinoid 10 years ago, it would have amused me to think of a P100 as a pathological case
05:14 tetragon Well, I don't have any of my older gear anymore
05:14 tetragon And the P100 performs much better than my P3-based laptop
05:16 tetragon And I don't have a cross-compiler to get my router thrashing
05:17 tetragon (although, I think the router is more powerful than the P100)
05:17 Infinoid yeah, most embedded stuff is faster than that these days
05:17 Infinoid slowest machines I have around here are some 266MHz ppc boxes and 533MHz ARM boards
05:18 tetragon My actual slowest is probably the Compaq handheld with WinCE
05:18 Infinoid I can't figure out how to declare a global variable in pir
05:22 tetragon Are there general purpose registers that you could poke?
05:25 tetragon Actually, it looks like there are instructions in docs/imcc/imcfaq.pod
05:25 Infinoid I think PIR is reallocating registers internally to prevent subroutines from clobbering eachother
05:25 Infinoid (which is exactly what I want, in this case)
05:25 tetragon I'm more used to dealing with real hardware than vms
05:26 Infinoid me too
05:37 dalek r27202 | chromatic++ | trunk:
05:37 dalek : [GC] Prevented freed contexts from appearing on the free context list multiple
05:37 dalek : times.  This works around a double-free error during global destruction exposed
05:37 dalek : by the Rakudo fakecutable.  I suspect the real problem is the interaction of
05:37 dalek : context sharing between certain PMCs (continuations, return continuations, and
05:37 dalek : closures) and forced context recycling.  For now, we avoid the crash, until we
05:37 dalek : debug and fix the wider problem.
05:37 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27202
05:38 Infinoid ooh, I've got it figured out
05:43 dalek r27203 | chromatic++ | trunk:
05:43 dalek : [src] Removed unnecessary keyword "struct" from Parrot_Context in declarations.
05:43 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27203
05:44 nopaste "Infinoid" at 75.32.77.88 pasted "This should make the test a lot faster, and more stable under load." (68 lines) at http://nopaste.snit.ch/12836
05:48 Infinoid seems rock solid here for loadavg=0 and loadavg=15
05:49 Infinoid (loadavg=15 takes 20 seconds to execute, but it still prints the right number.)
05:51 Zaba joined #parrot
06:01 dalek r27204 | chromatic++ | trunk:
06:01 dalek : [include] Reverted the broken part of r27203.  Oops.
06:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27204
06:02 Infinoid in fact, I'm going to check this in and see if anyone complains.
06:10 dalek r27205 | infinoid++ | trunk:
06:10 dalek : [t] Fix an intermittant failure that's been around forever.
06:10 dalek : The "three alarms" test in t/dynoplibs/myops.t has a race condition.
06:10 dalek : When run on a machine with a high loadavg (I used loadavg=15 for my
06:10 dalek : tests), the "main" subroutine doesn't even get around to queueing the
06:10 dalek : later alarms before the former ones have already fired.  This results in
06:10 dalek : the output statements occurring out of order, which fails the test.
06:10 dalek : Since the order of these things' execution is not guaranteed,
06:10 dalek : particularly under high load when there are significant delays just
06:10 dalek : queueing the things, the test shouldn't depend on their order.  Fix
06:10 dalek : the test so that each callback sets 1 bit of a "flags" integer, all we
06:10 dalek : care about is that the callbacks were actually called.
06:10 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27205
06:12 Infinoid tetragon++ # thanks for testing and discussion
06:12 Infinoid goodnight.
06:12 teknomunk joined #parrot
07:45 iblechbot joined #parrot
08:08 Zaba_ joined #parrot
08:34 dalek r27206 | fperrad++ | trunk:
08:34 dalek : [inno]
08:34 dalek : - collect some DLL for setup
08:34 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27206
08:36 Zaba joined #parrot
08:37 teknomunk joined #parrot
09:20 jan joined #parrot
09:51 slightlyoff joined #parrot
10:00 jan joined #parrot
10:03 Ivatar joined #parrot
11:00 barney joined #parrot
11:04 dalek r27207 | bernhard++ | trunk:
11:04 dalek : [Eclectus]
11:04 dalek : clean up stst.pir
11:04 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27207
11:17 dalek r27208 | bernhard++ | trunk:
11:17 dalek : Parrot built under Kubuntu 8.04
11:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27208
11:46 mire joined #parrot
12:10 Zaba_ joined #parrot
12:54 dalek allison@perl.org | Concurrency Tasks:
12:54 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
12:54 shorten dalek's url is at http://xrl.us/bjqpy
12:57 dalek allison@perl.org | Concurrency Tasks:
12:57 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
12:57 shorten dalek's url is at http://xrl.us/bjqpy
12:57 dalek allison@perl.org | Concurrency Tasks:
12:57 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
12:57 shorten dalek's url is at http://xrl.us/bjqpy
13:56 Coke shorten, wise up.
13:58 davidfetter checkety-check yourself before you shorten yourself ;)
13:58 * davidfetter wonders how shorten might most easily acquire this wisdom
14:06 jan joined #parrot
14:07 Infinoid at least its smart enough to recognise the same link over and over and reuse the existing entry
14:09 Infinoid the quick way to shut it up would be to get dalek to shorten the URL itself.  but I kinda like seeing the wikipage name too
14:16 jan_ joined #parrot
14:37 Coke smarter would be "you just shortened that in this channel, don't bother doing it again for N minutes."
14:41 Infinoid the same could be said of dalek, s/shortened/announced/
15:37 ambs joined #parrot
16:03 rblackwe joined #parrot
16:11 ewilhelm Infinoid: how about a redirecting namespace for the wiki links?
16:12 ewilhelm e.g. http://somewhere.short/concurrency_tasks
16:13 ewilhelm of course, the title of the wiki page is already on the previous line, so you don't lose much by just having dalek say an xrl
16:24 Infinoid that would work too
16:25 Infinoid it seems like dalek's svn URLs are just under the threshold of shortening, and the blog links are just over
16:55 Andy joined #parrot
17:01 ambs joined #parrot
17:08 Infinoid Coke: ping
17:14 cognominal pdump gives mie a bus error on my macbook intel
17:20 dalek r27209 | infinoid++ | trunk:
17:20 dalek : [pdump] Fix const warnings.  Add a default case to a switch statement.
17:20 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27209
17:23 dalek r27210 | infinoid++ | trunk:
17:23 dalek : [pdump] Add some necessary header file dependencies to build pdump.o
17:23 dalek : for when parrot itself hasn't been built yet.  (This helps -j.)
17:23 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27210
17:34 Andy left #parrot
17:34 Andy joined #parrot
17:39 dalek r27211 | infinoid++ | trunk:
17:39 dalek : [pbc_info] Add some necessary header file dependencies to build pbc_info.o
17:39 dalek : for when parrot itself hasn't been built yet.  (This helps -j.)
17:39 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27211
17:48 Theory joined #parrot
17:49 tetragon I haven't noticed anything unusual yet on my iBook (r27210, with patches for backtraces, readline detection, and architecture flags)
17:51 Infinoid was the asterisk-length stuff in printf("%*s", length, str) part of C89, added by C99, or what?
17:54 dalek r27212 | infinoid++ | trunk:
17:54 dalek : [pbc_info] Fix a couple of 64-bit integer conversion warnings.
17:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27212
17:56 dalek r27213 | infinoid++ | trunk:
17:56 dalek : [pdb] Fix up some const warnings.
17:56 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27213
18:01 dalek r27214 | infinoid++ | trunk:
18:01 dalek : [src] Fix two warnings in src/packdump.c:
18:01 dalek : src/packdump.c:164: warning: request for implicit conversion from 'DPOINTER *' to 'struct PMC *' not permitted in C++
18:01 dalek : src/packdump.c:169: warning: request for implicit conversion from 'DPOINTER *' to 'struct PMC *' not permitted in C++
18:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27214
18:03 Infinoid cognominal: is a backtrace available?
18:11 dalek r27215 | bernhard++ | trunk:
18:11 dalek : [Eclectus]
18:11 dalek : Actually use the sub scheme_entry(), as generated from NQP.
18:11 dalek : Some tests are passing.
18:11 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27215
18:12 * particl1 fears http://nopaste.snit.ch/12836 won't work on platforms that don't support sub-second sleep times (like win32)
18:12 PerlJam Infinoid: the * in printf has been there for as long as I can remember, so it was probably C89 or ever K&R
18:13 * particle wanders off to dig a trench &
18:13 Infinoid test results are welcome. :)
18:13 PerlJam poor particle ... it sounds like he's got latrine duty  :)
18:14 Infinoid but if sleep 0.1 doesn't do anything, the test will just spin for a moment, it still shouldn't fail
18:14 Infinoid hmm.  guess that depends on how fast it spins
18:17 davidfetter joined #parrot
18:18 Infinoid particle: I ended up applying that diff.  if it does fail on win32, I can fix it by switching from a loop-count-based loop to a time-based loop
18:20 Infinoid ...or just increasing the sleep time back to 1 second again.
18:23 AndyA joined #parrot
18:28 cotto_home joined #parrot
18:33 markus joined #parrot
18:35 dalek r27216 | infinoid++ | trunk:
18:35 dalek : [pmc]
18:35 dalek : * PMC_pmc_val(pmc) already has a return type of PMC *.
18:35 dalek : * That means (PMC *) casts serve no purpose... remove a bunch of those.
18:35 dalek : * Fix a minor typo in the POD, while I'm at it.
18:35 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27216
18:47 Infinoid cognominal: thanks
18:47 cognominal you are welcome
18:48 cognominal I forgot to say I used the most recent svn parrot
18:49 Infinoid is your gdb still open?
18:50 Infinoid I'm curious about the value of "cstr" at the time of the crash (src/spf_vtable.c line 320)
18:50 Infinoid its either a bogus string or a bogus va_list, and a string problem would be easier to debug :)
18:52 cognominal yes
18:52 Infinoid what does "print cstr" give you?
18:52 Zaba_ joined #parrot
18:52 cognominal ) p cstr
18:52 cognominal $1 = 0x0
18:55 Infinoid all right, now we're getting somewhere :)
18:56 guru joined #parrot
18:56 Infinoid what platform?
18:56 Infinoid oh, macbook intel
18:57 Infinoid can you go "up" to level #5 (PackFile_Constant_dump) and print self->u.string->strstart ?
18:58 Infinoid (I love the /* TODO: Won't do anything reasonable for most encodings */ comment just before this line)
18:59 cognominal 0x0
19:00 Infinoid ok, so what you've got there is a string PMC with no string pointer
19:00 cognominal I installed an hardy hearon on a virtual machine, I can see if I get the same result
19:00 cognominal I have icu btw on macosx
19:01 Infinoid ok.  pdump runs fine for me on linux/amd64
19:01 cognominal compiling parrot on ubuntu
19:01 tetragon I'm haven't been having any problems on OS X 10.5 on ppc
19:01 Infinoid this crash is very likely to be dependent on the .pbc file you dumped
19:01 Infinoid I tested with: ./pdump pbc_to_exe.pbc
19:01 Infinoid which pbc did you use?
19:01 cognominal the same one
19:02 Infinoid ok.  I'm not having any problems with ICU on linux
19:02 tetragon Just got a bus error
19:03 Infinoid tetragon: running the same thing?
19:03 tetragon Yes
19:04 cognominal I get the same problem on hardy heron
19:04 * Infinoid tests linux/i686 (gentoo)
19:05 cognominal ... at the very same place
19:06 Infinoid hmm, my i686 box gets a segfault much later in the dumping process
19:06 cognominal I skipped stuff in my dump
19:07 Infinoid oh.  #32, same place then
19:07 Infinoid have I mentioned that this code is on my list of things to replace? :)
19:07 tetragon My one crashed part of the way through #32
19:07 cognominal so you are set
19:08 Infinoid uh.  now its crashing on amd64 too.
19:08 Infinoid cognominal: you infected me! :P
19:08 shamu joined #parrot
19:08 * Infinoid wonders what he did differently this time
19:08 cognominal yea, I am part of the people that ruin experiments just by running around physically or virtually
19:10 Infinoid cognominal++ # scaring up the bugs
19:14 Infinoid pdump has crashed in this spot for at least one month now
19:16 cognominal I think nobody used pdump for a while
19:17 Infinoid Coke: plz go back in time and fix the Makefile back then, so I can use -j8 for bisecting at arbitrary points in the past, kthx
19:17 desertm4x hey, I'm currently working on #45015 and I was wondering, if anyone could take a quick look at my code. I'd like to know, if I can go on like that. :-) (it's at http://stud3.tuwien.ac.at/~e0625243/parrot/tmp/ btw)
19:20 Infinoid desertm4x: at first glance, it looks reasonable
19:23 Ademan joined #parrot
19:24 desertm4x okay, that's good. thanks for taking a look at it.
19:24 Infinoid of course, the ultimate test is whether it works :)
19:26 Infinoid s/reasonable/rational/
19:27 tetragon joined #parrot
19:29 Limbic_Region joined #parrot
19:35 shamu joined #parrot
19:36 shamu left #parrot
19:40 particle joined #parrot
20:11 Zaba joined #parrot
20:25 paco joined #parrot
20:27 shamu joined #parrot
21:00 Theory joined #parrot
21:14 jmcadams joined #parrot
21:48 Coke Infinoid: time machine, check.
22:01 bgeron joined #parrot
22:35 grim_fandango joined #parrot
23:05 kid51 joined #parrot
23:30 gryphon joined #parrot

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

Parrot | source cross referenced