Parrot 4.3.0 "In Which..." | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 25 April 2012.
whiteknight is adding winxed support to Geany 00:00
I think Geany might become my new editor of choice, unless I find some serious problems with it soon
00:03 bacek_at_work joined
dalek rrot/coke/rm_pasm: ec95e34 | Whiteknight++ | / (11 files):
Back out the last change. It was too aggressive for this branch. We can start a new branch to take the PASM-kill work to the next level
00:26
rrot/coke/rm_pasm: 872f2d3 | Whiteknight++ | / (45 files):
Merge branch 'coke/rm_pasm' of github.com:parrot/parrot into coke/rm_pasm
rrot/whiteknight/rm_pasm2: 7da89ee | Whiteknight++ | tools/dev/pbc_to_exe.pir:
Fix pbc_to_exe to not use the PASM compreg or dead APIs
00:36
00:38 dukeleto joined
whiteknight wtf? Somewhere along the line PLA isn't linking to libblas now 00:59
I'm adding -lblas to the commandline, but ldd says it's not linked to libblas 01:01
and then when I load it, it says it can't find the symbols from that library 01:20
bacek_at_work whiteknight, you probably want to install something like libblas-dev package 01:24
whiteknight I have that
libblas.so apparently isn't exporting any symbols
it was exporting symbols back in 11.10 01:27
01:30 benabik joined 01:32 preflex_ joined
bacek_at_work whiteknight, it's... impossible. 01:34
whiteknight bacek_at_work: maybe something is broken with nm on my machine.
nm: /usr/lib/libblas.so: no symbols
bacek_at_work looks like nm is broken 01:35
same on debian/testing
try objdump -T
whiteknight ah yes, there are the files 01:36
er, symbols
but that doesn't explain why my linker isn't fixing up the symbols
I am using clang. Maybe that's got the same problem as nm. I'll try gcc
bacek_at_work afaik clang doesn't have linker and uses standard one 01:37
eg "ld"
whiteknight I think so too. But I'm still going to try gcc 01:38
just in case
bacek_at_work good luck
whiteknight I don't need luck. I need more time
01:39 kid51 joined
kid51 whiteknight: ping 01:39
whiteknight pong 01:40
kid51 Looking at whiteknight/rm_pasm2 branch; I take it that it's not really ready for testing yet, right?
whiteknight not at all
not even a little
kid51 OK, FWIW smolder.parrot.org/app/projects/rep...ails/27956 01:41
whiteknight it's just a place to dump some things that don't belong in coke/rm_pasm yet
ha! thanks
kid51 Ah!
whiteknight kid51++
aloha Karma for kid51 is now 94
kid51 However, while I'm on it I will correct one codingstd test :-)
whiteknight :) 01:42
dalek rrot/whiteknight/rm_pasm2: 6ecf1e7 | jkeenan++ | src/pmc/imccompiler.pmc:
[codingstd] Remove trailing whitespace.
whiteknight blah, I'm still getting my new editor configured 01:43
bacek_at_work: no, you're right. Same thing with gcc. Whatever, I'm going to wait for a while 01:44
benabik ~~ 01:50
kid51 Hmm. We're failing 4 tests in t/benchmark/benchmarks.t 01:59
That's new ... and disturbing. 02:00
and fails in t/examples/catchall.t
See: smolder.parrot.org/app/projects/rep...ails/27958 02:01
Those are regressions since Apr 15 (i.e., since around last release) 02:02
whiteknight blah, no time to look at it now. Time for bed. 02:04
kid51 msg moritz Commit 5c81f3ea1cf2 (merge of kill_current_object branch) causes failures in t/examples/catchall.t and t/benchmark/benchmarks.t 02:16
aloha OK. I'll deliver the message.
dalek nxed: be2b8e4 | NotFound++ | winxedst (2 files):
rename getparamnum to generateparamnum for clarity
04:04
04:14 bacek_at_work joined 05:54 brrt joined
nine *yawn* Good morning, #parrot 06:13
06:33 pjcj joined
cotto 'morning, nine 06:37
06:44 fperrad joined 07:08 brrt joined 08:06 lucian joined
tadzik hello #parrot 08:25
08:36 cosimo joined 08:47 alvis left 08:53 alvis joined
brrt it would be so much fun if apache had a documented api 09:48
as in, actual documentation, with full listings of headers, functions, structures
moritz now you're just being greedy 09:49
brrt am i? 09:52
:-)
parrot has it
i'm seriously considering writing a script to read the header files and spit out html right now 09:54
10:34 JimmyZ joined
JimmyZ Coke: ping 10:34
dalek rrot: e7d7c16 | moritz++ | / (9 files):
fix failing tests after kill_current_object merge, kid51++

three are fixed by updating to non-ancient calling conventions
  (self as first invocant). The fourth was in PASM, and is now gone
10:50
rrot/coke/rm_pasm: 057bee0 | jimmy++ | / (2 files):
fixed t/pmc/sub.t, now all tests passed
11:30
rrot/coke/rm_pasm: 59bdc0e | jimmy++ | examples/benchmarks/oo4. (4 files):
remove oo4.* from examples/benchmarks/
11:33
awwaiid particle, I met your brother here near DC yesterday at a ruby meetup :)
dalek rrot/coke/rm_pasm: 8406a40 | jimmy++ | t/compilers/imcc/reg/alloc.t:
fixed t/compilers/imcc/reg/alloc.t
11:36
rrot/coke/rm_pasm: b4a5889 | jimmy++ | t/compilers/imcc/syn/symbols.t:
fixed t/compilers/imcc/syn/symbols.t
11:39
11:39 kid51 joined
dalek rrot/coke/rm_pasm: ffdab27 | jimmy++ | t/op/string_cs.t:
fixed t/op/string_cs.t
11:40
rrot/coke/rm_pasm: 8179a57 | jimmy++ | t/pmc/bignum.t:
fixed t/pmc/bignum.t
11:49
rrot/coke/rm_pasm: c0b29f8 | jimmy++ | t/pmc/coroutine.t:
fixed t/pmc/coroutine.t tests
11:51
11:52 benabik joined
dalek rrot/coke/rm_pasm: 3490971 | jimmy++ | t/pmc/io.t:
fixed t/pmc/io.t tests
11:53
rrot/coke/rm_pasm: 41ab4a5 | jimmy++ | t/pmc/iterator.t:
fixed t/pmc/iterator.t tests
11:56
12:02 kid51_ joined
dalek rrot/coke/rm_pasm: 1cd1c06 | jimmy++ | t/pmc/ (2 files):
fixed t/pmc/nci.t and t/pmc/orderedhash.t
12:02
rrot/coke/rm_pasm: d3e4fa6 | jimmy++ | t/compilers/imcc/syn/const.t:
fixed t/compilers/imcc/syn/const.t tests
12:05
JimmyZ msg Coke I fixed most failed tests
aloha OK. I'll deliver the message.
benabik G'morning, #parrot 12:11
JimmyZ morning benabik :_
benabik JimmyZ: Having a productive morning killing PASM? 12:12
JimmyZ benabik: not really, just fixed test
benabik Fixing tests is good 12:13
JimmyZ kid51++, who submitted a smolder.
aloha Karma for kid51 is now 95
benabik JimmyZ++
aloha Karma for jimmyz is now 40
benabik Huh. When did aloha start doing that?
eh. 12:14
JimmyZ don't know, ask bacek
moritz eeks.
aloha--
aloha moritz: Karma for aloha is now -68 (pffft)
benabik sherk
*snerk
At least aloha didn't speak up after every commit from dalek.
moritz karma jimmy 12:15
aloha jimmy has karma of 81.
JimmyZ looks like I lost karma
:) 12:16
moritz JimmyZ: no, you are just diversifying your karma over multiple nicks :-)
kid51_ JimmyZ: IIRC, the smolder I submitted was for whiteknight's version of the rm_pasm branch.
I didn't get around to smoking Coke's branch yet
moritz whiteknight has such a branch too?
JimmyZ nope 12:17
kid51_ git branch -a | grep -i pasm
But backscroll about 11 hours to see whiteknight's explanation of it in this channel 12:18
moritz: did you get my msg about test failures?
moritz kid51_: yes, thanks. I fixed them.
kid51_ Danke
kid51_ to $job
JimmyZ didn't see that branch
moritz I think it's stuff we should do after merging coke/rm_pasm 12:20
benabik What stuff? 12:21
moritz the stuff in whiteknight/rm_past2
12:21 mtk joined
JimmyZ aye 12:21
benabik moritz: Freud suggests you have something against PAST. 12:22
moritz benabik: nothing efficient :-)
benabik Ah. rm_pasm2 is about actually removing PASM from IMCC?
moritz looks like, yes 12:23
or at least preparing it
benabik I don't see a particular reason to drag our feet about that past Coke's branch. 12:24
moritz benabik: now your're starting with past too :-)
benabik moritz: "past" as in "beyond" as in "after we merge". ;-P 12:25
moritz benabik: I know :-)
benabik moritz: :-)
dalek kudo/nom: 1972721 | moritz++ | src/core/Backtrace.pm:
warnings should include line numbers from user-space programs, not from the setting
12:26
Coke JimmyZ: thanks for getting the tests!
JimmyZ Coke: :) 12:27
12:41 bluescreen joined 12:52 PacoAir joined 12:55 whiteknight joined
whiteknight good morning, #parrot 12:57
benabik o/ whiteknight
whiteknight hello benabik, how are you doing today? 13:00
brrt morning
noon, for me
whiteknight hello brrt
brrt hows life 13:01
whiteknight life is going well enough. you?
benabik whiteknight: Pretty good. Short on sleep, but coffee keeps me going.
brrt sleep shortness here as well, otherwise very good
i was offered a new appartment just this week, will be checking it out tomorrow 13:02
benabik It is by caffeine alone I set my mind in motion. It is by the beans of Java that thoughts acquire speed, the hands acquire shaking, the shaking becomes a warning. It is by caffeine alone I set my mind in motion.
brrt funny thing, that americans associate java with coffee 13:03
indonesia used to be the dutch east indies, we tend to associate it with the island :-)
whiteknight benabik: how are things on the home front? Your wife must be getting ready to burst at the seams
benabik The island of Java is where the Dutch started cultivating the beans.
So Java == island == coffee
brrt very true, it is just not a very common association arround here 13:04
benabik whiteknight: She's hitting the stage I call "very pregnant". Still mobile and working (desk job), but complaining a lot more.
moritz but that's an exciting phase, no? 13:05
you can probably feel the small one moving occasionally
PerlJam benabik: you should have heard my wife about week 36 when she was pregnant with twins.
benabik: *that* was very pregnant
benabik PerlJam: I'm not allowed to use the T word around my wife.
whiteknight that's nothing compared to the list of words you won't be allowed to use around the kid 13:06
PerlJam heh
whiteknight that list includes all my favorite words!
I taught my son how to say "damnit" and "oh crap", and my wife got very very angry
moritz parrot speaking your f<censored>ng language! 13:07
whiteknight :)
benabik I tend to have better control over my language than my wife, so we'll see who blames who.
moritz benabik: it'll still be all your fault :-) 13:08
benabik moritz: Oh, I'm sure.
moritz our daughter currently picks up our habit to say "mhm" to mean "no", which is quite cute, considering that she speaks only half a dozen different words 13:09
benabik From what I hear "no" and its synonyms stop being cute very quickly.
moritz well, she can already express disagreement quite clearly 13:10
babys learn that very quickly :-)
brrt whiteknight: anyway, i finally uploaded my private keys to github 13:11
so now, i can push to github - yay -
whiteknight yes, it's a good day. I saw some of your repos in the feed
brrt apxs is a usefull tool, just a bit over-featured as far as i'm concerned 13:12
benabik Blarg. Ubuntu is making it difficult to protect my machines against the user. I just want to disable shutdown, why is this so hard?
brrt i used to always have to type 'sudo shutdown' 13:13
benabik I didn't report to #ps, but it should have included "Blockers: Ubuntu"
brrt so, iirc, not having to type sudo before shutdown is a pretty recent change
whiteknight benabik: that would have been my report too 13:14
moritz is shutdown setuid-root on recent ubuntu?
benabik brrt: Gnome and unity have had GUI shutdown options for a while now.
whiteknight benabik: I found a better text editor than I used to have, and my kit is more streamlined now, so those are benefits
although PLA doesn't build on ubuntu now, because of a bug in the linker 13:15
benabik I don't think so. But I think something root listens on D-Bus to trigger shutdown.
... Bug... in the linker?
whiteknight benabik: yeah, I was talking to bacek about it last night. nm and ld both tell me that libblas.so doesn't export any symbols, but objdump -T shows hundreds of them 13:16
bacek said there was a problem in debian/testing, which I haven't followed up on yet
brrt benabik: i know, but i used to run x non-root, so that never worked; also, i used to use slackware until that wasn't worth the effort anymore
Coke JimmyZ: t/pmc/bignum.t is an easy fix. the macro is "fp_eq", not "fp_eq_ipr" 13:18
*not "fp_eq_pir"
might need to regenerate the MANIFEST also. 13:19
JimmyZ Coke: I don't have a bignum lib
Coke: so I can't test it
moritz I can do that 13:21
brrt also, i install into /home/bart/usr now, so that speeds things up :-) 13:23
Coke moritz: danke. trying to avoid committing ATM. 13:24
whiteknight brrt: yes, it's a very good trick 13:25
Coke: I ripped my commit out into a separate branch last night, so that shouldn't be causing any more troubles for you
dalek rrot/coke/rm_pasm: 8f67a19 | moritz++ | t/pmc/bignum.t:
fix bignum.t, Coke++
13:26
rrot/coke/rm_pasm: 38bc6ba | moritz++ | MANIFEST (2 files):
regen manifest
brrt what would any of you advise if you were buying a new computer and energy-efficiency was really really important
netbooks don't count
whiteknight I am getting into the market for a new laptop myself, but I don't have any recommendations yet 13:27
brrt too bad 13:28
ultrabooks look attractive, but the screen is too small
whiteknight I used to use a netbook a lot, the small keyboard was always the killer for me 13:29
moritz my last investigations into the market of small notebooks is two years in the past 13:30
brrt i like netbooks, but again, screen
moritz I guess its result is now completely irrelevant :-)
brrt my girlfriend has one, i'm jealous of it because of its efficiency, but i can't use one for myself
what are reasonable things to place in the blog? 13:40
13:40 jashwanth joined
moritz a short introduction, who you are, what you're going to work on, and why 13:40
and then usually reports about progress, difficulties, fun and not fun while coding 13:41
brrt the first thing, i already did
next thing, still have to do
whiteknight brrt: blog posts can be as long or as short as you want. Basically, it's advertising to help tell people what cool stuff you're working on 13:44
brrt advertising, okay, cool :-) 13:57
everybody is going to love mod_parrot
moritz if you make it loveable, yes :-) 13:58
whiteknight By the end of the summer, if we have anything like a security sandboxing system able to be integrated, modparrot could become completely awesome 13:59
brrt definitely 14:01
moritz then we'll integrate it with Bailador (a Perl 6 clone of Dancer) 14:02
whiteknight that would be boss
brrt that would be awesome, if you add some scaffolding
it would be awesome without 14:03
but scaffolding attracts lazy developers
whiteknight I do want to put together a fastcgi interface for parrot too, but that's very low priority if modparrot is in the works
We've been trying to get a GSOC student to work on modparrot for years
and years
brrt supposing modparrot works early - which i hope - then a fcgi interface could be possible, too
moritz fastcgi is very nice in theory, but often hard to debug
but maybe it can be made more debuggable 14:04
whiteknight yeah, that's why I'm not jumping on it
moritz: We can have pretty good backtraces available. Mix in a security sandbox where a failing child doesn't crash the process, we can have decent logging too
throw the whole mess into a debugging mode where all input/output is logged, and make all the stuff unit-testable, I think we can have a winner 14:05
Coke moritz, whiteknight: you know you're both working on DB access libraries at the rakudo and parrot level, yes? 14:06
brrt i just ponder about a unit-testable mod_parrot
moritz right, if you can record the requests and make them replayable, that would be awesome
brrt as in, not the module itself, but applications using the module
whiteknight Coke: I've just been playing around to check viability and learn the APIs. In the future I'll probably want to redo most of it in NCI 14:07
moritz brrt: sounds not too hard to do, if you provide a way to fill the request objects with mocked data
whiteknight Coke: it makes a really great case for having dyncall support integrated into Parrot, so we can borrow back some of moritz's work for general use 14:08
brrt moritz: that sounds doable, too 14:09
just need a mockapache
Coke whiteknight: just wanted to make sure there was no surprise. ;) 14:10
whiteknight no, I've been following along with moritz's work closely 14:11
brrt: that might be a bit of a stretch :)
moritz Coke++ # ensuring communication
aloha Karma for coke is now 589
brrt that depends on how much apache api you want to expose
php can get along very well with a rather minimal set 14:12
moritz brrt: I'd recommend something like the PSGI/Plack API
brrt: which is well tested and well used in p5 land
and not too complicated
brrt i read a bit about psgi
but i wonder if it should be mandatory
Coke misses all his old karma that was never imported into aloha. 14:13
brrt as in, 'all parrot applications running apache whether python or not should use psgi'
Coke . o O (but only a little)
moritz brrt: psgi was very heavily inspired by a similar standard in python :-) 14:14
brrt i'll read up on psgi 14:15
whiteknight in the world where parrot is king, the perl guys can just take the python library wholesale 14:16
pretend like they always thought it was a great idea :)
moritz well, also if the APIs are similar, it's easy to make a small wrapper which ensure full compatibility
whiteknight yes 14:17
moritz for Perl 6 we'll need type marshalling anyway, so we'll need some kind of custom wrapper
nine Perl 5 guys can already take the python library... 14:29
whiteknight nine: but they don't have a great threading solution with high performance 14:30
brrt i do wonder a bit, how apache's per-request-memory-pool will relate to parrot 14:31
i suspect that i can trust parrots' garbage collecting
whiteknight you're going to have to trust it 14:33
NotFound Mostly because there is no other option ;) 14:34
brrt :-)
whiteknight there aren't too many alternatives from inside parrot, but it is very decent in most ways
brrt what about filehandles 14:36
whiteknight What do you mean? We have a FileHandle PMC type
brrt i mean, filehandles should be auto-closed after each request
bascially, i imagine the following
every child process / thread in apache gets a parrot interpreter instance 14:37
whiteknight A FileHandle gets closed when the GC collects it, if you don't manually close it before that
moritz whiteknight: does it? I remember a bug report not too long ago that it doesn't
whiteknight moritz: It's supposed to. There might be an issue that we aren't always finalizing GC on interp destruction 14:38
NotFound There are problems with order of destruction.
whiteknight are there still? I thought we had most of those issues sorted out
moritz aye. When I open a file for writing in rakudo, and don't explicitly close it, the file will stay empty
brrt supposing i don't worry about that
whiteknight brrt: definitely, that isn't your problem 14:39
NotFound whiteknight: don't know, I always close explicitly.
moritz $ perl6 -e 'open(:w, "testfile.txt").say("foo")'
$ wc -l testfile.txt
0 testfile.txt
whiteknight NotFound: me too, but we shouldn't have to. That's what GC is supposed to be fore
for
14:39 JimmyZ_ joined
whiteknight moritz: okay, then I suspect finalization is turned off somewhere. I'll look into it 14:39
brrt then, after every succesful request, it'd be nice to either enforce garbage collecting, or otherwise reset the interpreter to a state where it is safe to load a new file again 14:40
NotFound Is possible that the buffer gets destructed before the handle.
moritz fwiw for rakudo it would be very useful to have separate finalization and freeing stages
14:40 jashwanth joined
moritz so that if you have a cyclic object structure, their .DESTROY methods are all called, but they can still refer to each other 14:41
and then a second sweep collects their memory
NotFound brrt: you can enforce GC. set unwanted variables to null and execute a seep op
s/seep/sweep
whiteknight moritz: I can talk to bacek about that. Might be possible without tanking performance 14:42
moritz: is that only at interp shutdown, or for all GC passes?
moritz whiteknight: for all GC passes
whiteknight: though I suspect would could mark objects that need such behavior on the C level somehow 14:43
whiteknight I think we should be able to add swept items to a list as we find them, finalize them all at once then add the whole list to the free list
moritz: but we absolutely, positively would not be able to guarantee ordering with such a scheme.
brrt NotFound: ok, very nice
whiteknight parents could still be finalized before children, even if they were still technically all "alive" 14:44
NotFound You can put a reference to the handle in the buffer, for even better circularity ;)
moritz whiteknight: I have trouble evaluating the consequences of that; maybe talk to jnthn about it? 14:45
NotFound Anyway I don't think that writing to a file and not closing it is a good idea, no matter how good the GC may be. 14:47
moritz I know; but perl programmers are used to get away with it most of the time
NotFound close can fail, and you'll never know it. 14:48
moritz I know
whiteknight in any case, we do need to make sure handles get closed.
Most other stuff is inconsequential compared to external system resources 14:49
moritz I noticed while writing the SQLite backend for DBIish :-)
it leaked statement handles
whiteknight It's almost like we want two VTABLE_destroy variants. One that should be called while the system is running, and one that is guaranteed to be called at system exit
NotFound You can set a list of open handles and close them as first step of interp destruction. But that way before final destruction they are referenced and thus not collected ;) 14:50
whiteknight with the understanding that the second one should be used less often
moritz in the end I decided to a keep a list of all active statements in the connection handle class, and finalize them all right before disconnect
whiteknight NotFound: yeah, but that's a pretty specific solution. What if you have something that isn't a normal handle?
We'd need to include a C-level cleanup callback handler for each entry 14:51
NotFound The common idea I read lately in both jvm and cli worlds is that depending on finalizers is The Bad.
whiteknight yes, it definitely is bad. But our users expect that and we should be able to provide *something* 14:52
moritz anyway, we want to support langauges on top of parrot that have custom destroy handlers
whiteknight yes
moritz so we'd better support, even if it's not the brightest idea
benabik whiteknight: Why does system_exit_destroy need to be different from destroy? 14:53
NotFound Yeah, but be ready to accept slowliness on custom finalized things.
whiteknight I just worry that we're going to get into C++ territory, where we can have destructors but can make almost no guarantees about them, and hope and pray that you don't do anything stupid inside a destructor like allocate memory or call a destructor
or throw an exception
benabik: what do you mean?
14:53 dmalcolm joined
NotFound I think that continuation passing style and guarantees of destruction at funtion return are mutually exclusive. 14:54
whiteknight oh, my two destroy vtables above? it's about the environment. One expects a running system to still be available, the other should expect that the ship is going down and references are dead
even strings 14:55
benabik C++ has very definite semantics for construction and destruction.
aloha Karma for c is now 709
benabik aloha: shush
whiteknight In the first case we can expect that the interp still exists, and interp globals still exist, etc. In the second, those things are most likely dead and gone 14:56
moritz if we go with a finalization and a freeing stage, why can't we just call finalize on all objects still alive, before freeing them?
NotFound benabik: it has... but then read about mixing longjmp with it.
moritz (during global destruction, that is)
whiteknight moritz: we can definitely do that, but then we still run into ordering issues
moritz that way all the objects still see a "normal" ennvironment
benabik NotFound: That doesn't sound like a good idea. 14:57
atrodo moritz> Wouldn't that potentially invalidate the garage collection run? What if an object, in finalization, attach itself to a global object?
whiteknight moritz: But at interp shutdown, do we want a 1 second pause while we finalize every PMC, or do we want a shorter pause where we only finalize the ones that hold external resources? 14:58
I mean, freeing a FileHandle at interp exist is much much more important than freeing an Integer
we can let the system heap manager pull in most dead memory for free, but handles need to be closed
NotFound A simple idea that probably solve some cases is to null the object root set and the perform a collection.
benabik NotFound: Oh. longjmp at all causes issues with destruction because it bypasses normal control flow. I see. 14:59
whiteknight Again, why sweep all PMCs, when the vast majority of them don't need it? We need some kind of priority registry
moritz whiteknight: yes, we should have a single bit in the PMC header that indicates if that objects needs custom destroy functionality
nopaste "rurban" at 192.168.1.3 pasted "cygwin overflow rakudo spectest failures" (163 lines) at nopaste.snit.ch/137433
benabik Nulling the root set will catch everything but cycles. 15:00
And cycles are... hard.
NotFound benabik: aye. And in the same way an eventual finalizer in a parrot sub can be bypassed by invoking a continuation in that sub.
whiteknight moritz: something like that, yes. We do a separate finalization run of GC, and only pay attention to PMCs in the alive set which have that bit turned on
that should avoid the performance hit and still give us a guarantee. Plus, all PMCs will stay alive since we don't sweep or free any of them 15:01
NotFound Uh... we already have that bit. 15:02
whiteknight we do?
PObj_destroy?
benabik PObj_custom_destroy_FLAG
whiteknight Yeah, that's not exactly the same thing 15:03
We don't want to finalize too much at interp shutdown. We only want to finalize the subset of things which hold external resources
Everything else will be automatically freed at program exit by the heap manager, and it's a waste of cycles to touch them 15:04
NotFound whiteknight: You meen freeing the memory?
whiteknight and calling VTABLE_destroy 15:05
I probably need to think about this a lot more 15:06
NotFound Well, if it hasn't custom mark nor custom destroy is almost sure that is dead from a GC point if view. 15:07
nopaste "rurban" at 192.168.1.3 pasted "cygwin t/spec/S16-filehandles/filetest.rakudo" (48 lines) at nopaste.snit.ch/137434 15:08
NotFound But probably the only save for that is a bunch of Integer and Integer arrays.
whiteknight Any PMC that allocates unmanaged buffer space from the GC would be unnecessary to finalize 15:09
benabik I somehow feel having two destructors is hazardous.
15:09 JimmyZ_ joined
benabik Pretty much anyone who uses one will want to have the other. 15:09
moritz on the high level language, either an object has a destructor, or it does not 15:10
whiteknight blah. Destructors and GC are hard 15:11
benabik Yes.
NotFound Well, if a language particularly wants to offer strict guarantees in some kind of objects it can keep a list in its runtime and reference count it. 15:13
moritz ... and target a VM different from parrot, because it makes absolutely no sense to have both GC and refcounting in the same program (maybe unless the two very closely cooperate) 15:14
atrodo so perl5 can never be on parrot? 15:15
moritz atrodo: not very performant and 100% compatiable, no
or maybe there is a way to make the two systems cooperate nicely, and I just don't know about it 15:16
NotFound 100% compatibility with languages with long history and high use is impossible. Ask the python guys about that ;)
benabik Our goal is difficult, but let's not declare it impossible, hm? 15:17
moritz atrodo: note that for the p5 user, refcounting only matters for blessed objects and containers that hold them
atrodo: so it would be OK to GC ints and refcount blessed objects and array/hash refs
NotFound benabik: 100% of anything is impossible.
benabik: and asking for the lht last 0.1% usually just gets in the way of the remaining 99.9% 15:18
whiteknight I don't think some GC changes are going to be impossible or distract us from other important work 15:19
We can give Rakudo all sorts of features if they don't care about performance at all. All systems are going to require some kind of compromise
benabik Trying a GC sweep at exit feels like it shouldn't be terribly difficult.
whiteknight We have the code to do exactly that. I suspect it's just commented out somewhere
Having a FileHandle and saying we should definitely clean up that FileHandle on program exit is easy 15:20
benabik finalize_gc_system...
whiteknight order of destruction is and always has been hard 15:21
NotFound Yeah, but I think that mentions of a p5 100% compatible don't help to keep focused.
whiteknight If Rakudo promises that order of destruction will never be important, we can give them almost everything else
moritz can't make that promise for rakudo; too little understanding of the implications 15:22
benabik Do we guarantee any ordering in the usual case?
whiteknight There's no way we can do ordered destruction internally. If Rakudo wants ordered finalization, that's something that will have to happen at the application level
We would need ordering metadata, specified through an as yet unknown interface, we would need to be able to keep that metadata up to date as GC runs and members of that object graph are freed 15:23
...possibly across multiple threads
...possibly across security sandbox barriers
benabik There has to be a "normal" order for destruction. _Some_ order happens.
aloha is bacek's, right? 15:25
aloha benabik: Dunno.
benabik aloha: aloha?
aloha benabik: aloha is simple Bot::BasicBot::Pluggable hosted on github.com/bacek/aloha
whiteknight I know .NET doesn't offer deterministic ordered destruction, so it's not like we're going to lose out on that feature
I don't think JVM does either, but I can't find a source to verify that right now 15:27
benabik Hm. ms2 does a destruction sweep. 15:29
NotFound Al algorithm that may be reasonable sure, but probably sure is: clean the root set, do a GC, do a GC and keep doing GCs while the number of live objects keep decreasing.
moritz fun fact: most JVMs allocate an OutOfMemory exception at startup, and keep it around as a singleton object 15:30
benabik gms has a finalize function but never enables it.
moritz so that they never OOM while OOMing :-)
NotFound moritz: we don't even throw out of memory exceptions yet ;)
benabik I think our response to OOM is "OMG, the world is ending" 15:31
moritz right, we just die.
rurban you can specify finalizers to help in ordered destruction, like our DESTROY methods. but it's unordered by definition
benabik DESTROY method that do things other than release resources are probably not sane.
benabik wonders what uncommenting `interp->gc_sys->finalize_gc_system = gc_gms_finalize;` would do. 15:34
whiteknight we can't even just do that trick, because PCC will allocate a CallContext to invoke the handler 15:35
not to mention any accidental boxing/unboxing that happens while in the handler that would enter an infinite loop
benabik It shouldn't infinite loop. 15:36
whiteknight if you didn't pop the handler it would
benabik Oh, the OOM thing. Blah.
We could probably allocate enough that a careful destructor could work. Non-careful destructors would just cause the OOM to pass upward through the stack. 15:37
Okay. Parrot with gms_finalize enabled builds... testing. 15:38
benabik expects subtle errors.
whiteknight I'm sure it will build and run mostly fine 15:41
I think we've fixed up most of the expected order issues that used to be a problem
I'm certain that the feature was turned off because of performance concerns
benabik It was never enabled for GMS. 15:42
brrt what about stop-the-world?
benabik And never disabled for MS2.
whiteknight it was definitely enabled and disabled in turns for MS2
I know we went back and forth with it
benabik Well, it's currently enabled.
15:42 GodFather joined
whiteknight i believe that 15:42
NotFound I miss the infinite memory GC 15:43
whiteknight don't we still have it floating around somewhere?
moritz misses the machine with infinite memory
15:43 bluescreen joined
NotFound whiteknight: Configure help don't mention it 15:44
whiteknight where's that gigantic turing tape I ordered?!?
NotFound That reminds me the old joke: "Windows 95 for Spectrum is swapping to 120m tape. Plaease WAIT!" 15:45
brrt garbage collected turing tape
provably unused tape can be stitched on the other end
benabik Benabik/parrot now has a finalize_gms branch with the one line commit to enable finalization. 15:46
NotFound The beauty of the infinite memory model is that you can smile at reports of memory leaks.
benabik Sadly, I don't have the time to experiment farther than "builds and passes tests" 15:47
NotFound (I've received a bunch of them for winxed stage 0)
dalek p/toqast: 0ce175f | masak++ | src/QAST/Operations.nqp:
[QAST::Operations] added lots of opcodes

Stopped at a couple that look like special cases.
Not all of these are tested, and some are probably wrong, but most of them should work.
16:01
whiteknight what is QAST?
16:02 bluescreen joined
dalek p/toqast: d36485e | masak++ | src/QAST/Operations.nqp:
[QAST::Operations] some more opcodes

Do let me know if any of these aren't meant to be kept around any more. I'll remove them right away. :)
16:11
NotFound whiteknight: The get_context opcode is supposed to be stable enough to use in the implementation of the getcontext builtin instead of the current way? 16:12
nine moritz: Python uses reference counting and in addition has a GC 16:18
moritz: at least CPython
cotto ~~
whiteknight NotFound: yes, that op is stable enough 16:32
NotFound whiteknight: maybe is better to also add a new get_context and deprecate getcontext, for consistency. 16:33
dalek nxed: a85b898 | NotFound++ | winxedst2.winxed:
new builtin get_context, deprecate and reimplement the old getcontext
16:41
NotFound Done
whiteknight that's fine too
16:42 Patterner joined
Coke is looking for a web dev in Albany, NY. privmsg me for details) 16:50
whiteknight I know a webdev in NYC. Probably not good enough 16:52
dalek kudo/nom: 4823171 | duff++ | src/Perl6/Actions.pm:
nqp-ize pir::chr
16:53
kudo/nom: 420739a | duff++ | src/ (25 files):
nqp-ize pir::die
kudo/nom: 03fb952 | duff++ | src/ (8 files):
nqp-ize pir::join
kudo/nom: c590cc6 | duff++ | src/Perl6/ (5 files):
nqp-ize pir::split
kudo/nom: 8b63698 | duff++ | src/Perl6/Actions.pm:
nqp-ize pir::index
kudo/nom: f043136 | duff++ | src/ (3 files):
nqp-ize pir::clone
kudo/nom: ba88474 | duff++ | src/core/Exception.pm:
nqp-ize pir::exit
kudo/nom: 34b5d7d | duff++ | src/ (7 files):
nqp-ize pir::isnull
kudo/nom: b26ba49 | duff++ | src/Perl6/Metamodel/ (2 files):
nqp-ize pir::istrue
kudo/nom: 83587be | duff++ | src/Perl6/ (5 files):
nqp-ize substr
17:10 PacoAir joined
dalek sella: 3784828 | Whiteknight++ | src/random/randomnumber/MersenneTwister.winxed:
Fix MersenneTwister for use with 32-bit machines. On 32-bit, 0xFFFFFFFF is -1, so dividing by that just gives you the negative value instead of a normalized value. We really want 0x7FFFFFFF, so we get the maximum positive value and therefore end up with a normalized float.
17:26
whiteknight That bug has bothered me for months, and as soon as I install a 32-bit VM the reason pops right out at me 17:27
it's always a little embarrasing to forget such a fundamental fact of 2s compliment arithmetic 17:29
actually, the implementation is still not correct, but I can do the rest of the fixes later 17:33
17:36 schmooster joined
moritz whiteknight: re qast, it's a reimplementation of PAST on top of 6model, updated to the state of all(rakudo, nqp, parrot) year 2012 17:43
whiteknight oh, okay. Cool 17:53
moritz: what does the Q stand for? 17:54
moritz whiteknight: it's the successor of P in the alphabet 17:55
benabik nQp, I think
moritz or mabe Qompact Abstract Syntax Tree :-)
cotto Quite Abstract Syntax Tree 17:57
atrodo Quasi Abstract Syntax Tree
whiteknight msg jashwanth I just built and tested PLA on Ubuntu 11.10, 32-bit, with Parrot 4.3.0 and libatlas-base-dev. This is what you have, correct? We need to debug more if you are seeing bugs 17:58
aloha OK. I'll deliver the message.
18:14 alvis joined
jashwanth no I have a 64 bit machine 18:16
whiteknight oh, okay. Then I wonder why you were seeing that hang in the Rosella test. That was a problem with 32-bit machines 18:17
or, 32-bit operating systems
jashwanth I dont know to check weather my system is a 64 bit one there was a command and the result suggested it was 64 18:19
whiteknight uname -a
benabik uname -m
whiteknight whichever
post the result 18:24
jashwanth k
Linux jashwanth-XPS-L501X 3.0.0-19-generic-pae #33-Ubuntu SMP Thu Apr 19 20:59:10 UTC 2012 i686 i686 i386 GNU/Linux
whiteknight I think that's a 32bit setup 18:25
jashwanth i686
for -m
whiteknight "parrot_config intvalsize"
and post the result
jashwanth 4
so a 32 bit one I suppose 18:30
is it
whiteknight yes 18:31
do "which parrot-nqp"
jashwanth /usr/local/bin/parrot-nqp
whiteknight is that where you're installing things to?
if not, delete it 18:32
jashwanth no actually u gave me some other place
whiteknight okay, delete it
jashwanth bin/jashwanth/
whiteknight delete anything in /usr/local/bin that starts with "parrot"
jashwanth something like that
ya did that 18:35
whiteknight okay, do "which parrot-nqp" again
jashwanth now the above statement does not give any result 18:36
whiteknight blah
echo $PATH
jashwanth why was these files causing the problem 18:37
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
whiteknight Okay, you need to add your install path there 18:45
edit your ~/.bashrc file, and add this to the bottom:
jashwanth how ?
whiteknight PATH=$PATH:/home/jashwant/parrot/bin
just a regular text editor
jashwanth done 18:51
whiteknight okay, close your terminal and restart it 18:52
and when it comes back, type "which parrot"
and "which parrot-nqp"
jashwanth no result in both cases 18:53
whiteknight do echo $PATH again
jashwanth /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jashwant/parrot/bin 18:54
now its come up 18:55
whiteknight you're getting /home/jashwanth/parrot/bin/parrot?
jashwanth no 18:56
am getting:/home/jashwant/parrot/bin
sorry yes 18:57
the same
whiteknight okay, same for parrot-nqp?
jashwanth what should I do? 18:58
whiteknight which parrot-nqp
post the result
jashwanth nothing
whiteknight try to install parrot again. parrot-nqp should be at the same place as parrot
jashwanth I am getting no result for both parrot-nqp and parrot 18:59
so now try to reinstall parrot without removing the old one? 19:00
whiteknight I don't think there's an old one to remove
just install it
moritz what invocation did you use to configure parrot?
something like perl Configure.pl --prefix=$HOME/parrot/ ?
jashwanth where do u think these newly installed files might go? 19:01
whiteknight jashwanth: they should go to wherever you say in --prefix
you pick the directory
jashwanth ok 19:02
should I perform the test 19:03
whiteknight no
configure, make, install. Copy the output and email it to me
jashwanth am providing the same address "/home/jashwant/parrot" 19:04
whiteknight okay 19:05
jashwanth done 19:08
some initial commands are missing for "make install" 19:09
whiteknight what do you mean? 19:12
okay, so it installed to /home/jashwanth/parrot/bin/parrot
do "which parrot" 19:13
post the result
jashwanth no result :( 19:14
whiteknight type "/home/jashwanth/parrot/bin/parrot -V"
jashwanth This is Parrot version 4.3.0-devel built for i386-linux
Copyright (C) 2001-2011, Parrot Foundation.
This code is distributed under the terms of the Artistic License 2.0.
For more details, see the full text of the license in the LICENSE file
included in the Parrot source tree
whiteknight okay, so the file exists
do "echo $PATH" again and post the result 19:15
jashwanth ok
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jashwant/parrot/bin
whiteknight you have a typo in the last part.
it says "jashwant", but the path you installed to is "jashwanth"
with the "h" at the end 19:16
jashwanth oh no
what do I do now to correct it 19:17
whiteknight edit your ~/.bashrc file again and fix it
then you can close your terminal and restart it to run the changes
Coke whiteknight: or "exec bash" 19:18
moritz or you run exec $SHELL
Coke moritz++'s safer in general.
aloha Karma for moritz is now 3122
whiteknight whichever, those are easy too 19:19
Coke btw, I'm guessing someone did a cpan upgrade on aloha's machine, inadvertently upgrading one of the IRC plugins. this has happened before.
jashwanth /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jashwanth/parrot/bin
whiteknight jashwanth: looks better. Try "which parrot" 19:20
jashwanth /home/jashwanth/parrot/bin/parrot
whiteknight and "which parrot-nqp"?
jashwanth /home/jashwanth/parrot/bin/parrot-nqp
whiteknight yay! progress
19:20 rich joined
jashwanth whiteknight++ 19:20
aloha Karma for whiteknight is now 2695
jashwanth whiteknight++
aloha Karma for whiteknight is now 2696
jashwanth whiteknight++
aloha Karma for whiteknight is now 2697
whiteknight enough! 19:21
:)
jashwanth ohhh.
:)
whiteknight okay, go to PLA, "make clean && make && make test"
cross your fingers.
jashwanth yes going for it
whiteknight awesome
jashwanth Rosella 19:22
whiteknight oh yes, that first
Coke: I don't mind the change. It's better than waiting till everybody goes to bed to check your own karma without people thinking you've got a vanity problem
not that I would know. I would never do that
jashwanth error:imcc:'$loadlib' is not a valid register name 19:23
in file 'setup.winxed' line 1
for Rosella? 19:24
nine whiteknight: but in case you want to: aloah accepts private messages ;)
whiteknight do "make"
nine: That's even worse! Then the good news isn't logged publicly
jashwanth ok
done with rosella 19:26
whiteknight awesome, install that and try PLA
jashwanth doing 19:27
Ohhh no 19:29
-------------------
t/pmc/nummatrix2d.t (exit code: 127 Tests: 15 Failed: 0)
Test aborted with non-zero exit code
t/methods/complexmatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
Test aborted with non-zero exit code
t/methods/nummatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
Test aborted with non-zero exit code
Passed 360 tests in 55 files (3 test runs, 22.15 seconds)
whiteknight garble
Coke "make clean all test" would probably also work, wk
whiteknight Coke: baby steps 19:30
19:30 bluescreen joined
jashwanth so ? 19:31
whiteknight jashwanth: are those the only failures?
jashwanth yes
Test Summary Report
-------------------
t/pmc/nummatrix2d.t (exit code: 127 Tests: 15 Failed: 0)
Test aborted with non-zero exit code
t/methods/complexmatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
Test aborted with non-zero exit code
t/methods/nummatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
Test aborted with non-zero exit code 19:32
Passed 360 tests in 55 files (3 test runs, 19.94 seconds)
Result: FAIL
whiteknight okay, let's just ignore it for now.
We'll have to find a better way to debug those later if they become a problem
jashwanth so now install PLA
whiteknight you don't need to install it
jashwanth ok 19:33
whiteknight you will be working there in the repository
jashwanth so now just go and read the files to get a fair idea right? 19:34
dalek nxed: a072d6c | NotFound++ | winxedst2.winxed:
allow by reference operator in inline
whiteknight yes
19:40 lucian joined 19:46 brrt joined
brrt ping moritz 19:50
moritz brrt: pong
brrt hi, did you know that in your country (sorry for that phrase) you can buy laptops with linux pre-installed? 19:51
which is awesome
moritz brrt: yes. In fact I bought one (and immediately removed it) 19:52
it came with suse, and I wanted debian :-)
but it was still great that I didn't have to pay a windows license :-)
PerlJam I thought that laptops with linux pre-installed was old hat everywhere. Been doing it for years in the US
brrt it isn't in the netherlands
whiteknight PerlJam: which vendor? 19:53
PerlJam Dell for one.
whiteknight PerlJam: The only convincing vendor I've found to do it is System76
last time I looked at dell, I had a link to a page for linux laptops that was dead, and I couldn't find it on their site
brrt amazon.de sells one from hp
80 euro's cheaper than the same model with windows 19:54
PerlJam What I haven't seen are vendors that give you your choice of linux dist. Usually they cater to only 1 or maybe 2 if you're lucky. 19:55
19:56 contingencyplan joined
whiteknight I'm hoping to get a new laptop this summer. Right now I'm looking at either Lenovo T series or System76. In the former case I'll pay the windows tax and keep it dual-boot for testing 20:00
dalek p/toqast: 4422265 | jnthn++ | src/QAST/Operations.nqp:
Can't have sigless ops any more. Also concat should always work on strings.
20:01
p/toqast: 9eb078c | jnthn++ | src/QAST/Compiler.nqp:
Handling of lexical paramters, including natively typed ones. Also, lookup of lexicals declared in the current block; this is optimized right off to a register access.
p/toqast: 6999d2b | jnthn++ | src/QAST/ (2 files):
Slurpy can only go on a QAST::Var.
p/toqast: 63d58d9 | jnthn++ | t/qast/qast.t:
A couple of initial tests for lexical parameters.
nine I've heard that at least with Dell it's possible to call them and remove Windows from the package even if the choice is not available on the website.
benabik has never heard of System76 before 20:02
whiteknight I hadn't until recently when I googled for linux-friendly laptop manufacturers. They seem legit 20:03
herbsutter.com/2012/05/03/reader-qa...c-and-c99/ 20:04
nine They've been around for ages.
whiteknight mom always said if I have nothing nice to say, I shouldn't say anything at all
benabik They don't actually seem to have a Windows option at all. Makes it hard to recommend to most of my friends 20:05
<3 "Donate Your Old Computer: System76 has partnered with non-profit Kids on Computers to help bring computers and open source software to disadvantaged kids."
nine If only they had better hardware. But for me they just couldn't compete with a Lenovo T420. 20:06
whiteknight The hardware seems decent enough, and if they have a decent price and they love ubuntu I might be convinced. I've seen a few very good reviews 20:12
but you are right, if I could grab a T420 for a decent price that's hard to beat
benabik builds a new Ubuntu 12.04 installer CD and crosses his fingers. 20:13
whiteknight benabik: install from CD has gone very smoothly for me several times
nine have got one with an extended battery and the disk replaced with an SSD for a year now. It's the perfect work machine, runs for 13 hours and is absolutely quiet
whiteknight it's the "fast and easy" upgrade button that gets me every time
nine: wow. 13 hours is pretty boss battery life
benabik whiteknight: This is my custom installer that does things like install the pile of packages the CS Dept needs and disables pesky things like "shutdown". 20:14
Sadly, after I finish this project, I really need to buckle down on the thesis for a couple weeks. pct_winxed may not get much farther as I'll probably go straight from thesis to GSoC. :-/
whiteknight oh, okay. Definitely cross those fingers
benabik whiteknight: I've been getting a lot of crashes on my test installs of 12.04. aptd and unity-lens-video. You seen anything like that? 20:15
whiteknight benabik: no, but I don't think I've used the video lense thingy yet
benabik whiteknight: Neither have I, but it crashes anyway. I'm guessing the dash queries it when you type.
whiteknight I do get all sorts of dbus-related error messages, and dpkg
it's not a very solid-feeling release, but many of the feature improvements seem worthwhile 20:18
hopefully a few patches and weekly updates fix us up
benabik Yeah. The thing I find interesting is that an entire language went missing. smlnj is in 11.10 and 12.10, but not 12.04 20:19
I may just uninstall the video lens. It doesn't seem terribly useful in a school environment. 20:20
whiteknight what is smlnj?
cotto the standard ml compiler
benabik From University of New Jersey 20:21
Coke is not going to YAPC::NA this yeqr. 20:44
cotto neither 20:58
rurban Configure auto::va_ptr does a stack-buffer-overflow 40 bytes outside (clang -faddress-sanitizer) 21:00
Coke all code run during config probes should probably not be held to the same standard as parrot itself. 21:01
(no clue about that particular probe)
rurban I'll debug into it. Does not sound too worrysome 21:02
worse: ./parrot -o runtime/parrot/library/PCT/HLLCompiler.pbc compilers/pct/src/PCT/HLLCompiler.pir heap-buffer-overflow off-by-one 21:08
benabik lol 21:09
rurban probably past the \\0 in a string or so
its a 2byte buffer, probably a 1-byte string
I forgot the Configure debugging steps: b postpone auto::va_ptr::runstep did not stop 21:11
21:22 perlite joined
rurban it's compilers/imcc/pbc.c:1947 21:46
benabik rurban++ 21:47
aloha Karma for rurban is now 15
21:47 whiteknight joined
benabik Buh. That's my code. 21:47
whiteknight .?
benabik I'm not sure how that overruns the array, though. 21:49
Does the string returned by Parrot_str_to_cstring have a length of Parrot_str_byte_length? 21:54
NotFound end >= src shouldn't be end >= start ? 21:55
benabik src is the entire string. start is the be beginning of the data. end is the end of the data. 21:56
So src <= src <= end < src+sizeof(src) should always be true. 21:57
Oh, I see what you mean there. That should probably be the case.
NotFound Or maybe end > start 21:58
benabik I was looking farther down. rurban blamed :1947
whiteknight benabik: (re Parrot_str_byte_length) not necessarily, if the STRING contains NULL characters the C string will contain those but strlen will report it short
rurban I believe it's at the end at /* See if there are any garbage characters after the number */
we have to check if (chr < end) ...
yes, that was it.
NotFound Yes, but if that is wrong it can reach that point in cases it shouldn't
rurban I'll send my patch 21:59
benabik Oh.
It's going one past in the "0" case.
Moving the ++chr to before "case '\\0':" is probably the right move.
benabik-- 22:01
heh. aloha doesn't announce that.
nopaste "rurban" at 192.168.1.3 pasted "AddressSanitizer heap-buffer-overflow compilers/imcc/pbc.c:1988" (145 lines) at nopaste.snit.ch/137517 22:02
benabik That last while loop should never overrun, as it will stop if it hits \\0
rurban But I'm not sure if chr == end can be allowed 22:03
benabik End should never be beyond the \\0 at the end
If it is, then there's a problem in the setup.
whiteknight: I'm concerned with allocated memory, not strlen. 22:04
whiteknight oh yes, I think it will have that much memory
rurban you are right. The last loop is kosher
benabik Does `end = src + l - 1` drop end on or before the null? (l = length(src)) 22:05
It should drop it before... l is the length of the source parrot string. 22:06
rurban The next overflow is on the stack (nice, valgrind cannot find that) in Ops/Compiler/Actions.pm
whiteknight that sounds...bad
rurban oops, that in the gc. trace_mem_block const size_t ptr = *(size_t *)cur_var_ptr 22:08
dalek rrot: b58a50c | benabik++ | compilers/imcc/pbc.c:
IMCC: Be more careful with pointers parsing FIAs

  - Don't let the end be before the start
  - Incrementing past NULL is generally considered poor on a C string.
22:09
benabik Hm. I didn't actually wait for the test to complete on the "obvious" fix. Hope it actually was right. 22:10
benabik--
nopaste "rurban" at 192.168.1.3 pasted "GC AddressSanitizer stack-buffer-overflow" (49 lines) at nopaste.snit.ch/137518
rurban And I thought this imcc code was Leo's 22:16
benabik I re-write the FIA parser to be less braindead
Yay. PASS on Darwin x86_64. If it still has a problem there let me know, rurban++ 22:17
No idea about the GC one though. 22:18
rurban I recompile in a git cloned dir now. This will be hard to catch traditionally 22:19
But I trust AddressSanitizer to be correct
benabik GCs are tricky beasts that occasionally do things that are not sane anywhere else. 22:20
rurban its tricky because its not easy repro and I'll have to write to catch it 22:21
write code to catch it
got it again at the same place, good. 22:22
benabik reproducibility is good.
rurban But I'll do that tomorrow, have to go soon.
It definitely reading past lo_var_ptr from the stack in trace_system_stack 22:24
Oh, I read that's intentionally 22:25
my boy. I have to blacklist this beast
benabik GCs do insane things. 22:26
rurban I added #ifdef __clang__ __attribute__((no_address_safety_analysis)) #endif to it 22:30
whiteknight I think we can try to transition to a precise GC that doesn't do stackwalking within the next year 22:35
rurban samewise for trace_system_areas which does a stack-underflow by one ptr
22:36 plobsing joined
rurban samewise for Parrot_gc_trace_root 22:36
The gc looks insane to me 22:43
whiteknight rurban: I'm looking at that trace_mem_block function now, which is what is called by trace_system_areas et al. The loop looks correct. I don't see any obvious overflow
rurban me neither 22:44
I also get stack underflows, reading beyond the 1st arg interp
whiteknight well, that function does trace up the stack beyond the current frame. that might be what it's talking about 22:45
I wonder if there is an annotation we could use to tell the compiler and other analyzers that this behavior is expected 22:46
rurban #ifdef __clang__ __attribute__((no_address_safety_analysis)) #endif 22:47
but I have to check if that is correct for all clangs or only for -faddress-sanitizer builds. so it might need a configure probe
this attr is relatively new 22:48
looks good so far. compiling the library pirs now 22:50
I rather try perl6 which is huge
parrot tests are passing, I have to leave. more tommorrow 22:51
whiteknight you use clang on cygwin? 22:53
23:00 benabik joined
whiteknight I had a bunch of macros sitting around for doing precise GC. I need to look them up and see about them 23:12
23:22 rurban_home joined 23:26 kid51 joined
cotto seen nbrown 23:30
aloha nbrown was last seen in #parrot 1 days 13 hours ago saying "cotto++".
whiteknight ha
kid51 msg moritz I confirm that you have fixed the failing tests in t/benchmark/benchmarks.t and t/examples/catchall.t 23:31
aloha OK. I'll deliver the message.
kid51 Are there any branches currently needing basic smoke-testing? 23:34
benabik ~~
23:38 aloha joined
bacek_at_work ~~ 23:38
c++ 23:39
karma c
aloha c has karma of 710.
bacek_at_work sorry for this
I reinstalled everything perl-related on my box using local::lib recently.
I lost few fixes for bot::basicbot
Coke bacek_at_work++ # do you run aloha on #perl6 also? 23:47
23:48 kid51_ joined
bacek_at_work Coke, yes. Let me restart this instance. 23:56