Index

Show enters and exits. Hide enters and exits.

00:12:51evandbussink: no segfault here in do_sqlite3
00:12:57evantry a rake clean.
00:14:42brixenhrm, you know what, I bet the ext are not rebuilding when there are changes to native method stuff
00:15:03brixenI got a segfault trying to run gem last night, and I rebuilt with a rake extensions:clean
00:15:16evanooh
00:15:18evancould very well be.
00:15:24evanpoopsy
00:16:12brixenbut I'm not sure why that would matter
00:17:16evandbussink's issue though is GC related
00:18:08brixenyeah, could be totally unrelated to what I observed
00:18:14brixenjust that it was in the syck ext
00:18:39brixenand that's where I was getting a segfault too, but not just there
00:18:56brixenI thought i'd f'd up my .gemrc at first, because I had just edited it
00:20:46evanwhat character should I start "hidden" methods with?
00:20:51evan$ ?
00:20:57evan* ?
00:21:18brixenhm
00:21:29brixen%
00:21:47evanyou think % eh?
00:22:05brixenoh oh or # :D
00:22:12evanI thought about that
00:22:16evanbut we use # in docs
00:22:18evanit would be confusing.
00:22:22brixentrue
00:22:26brixenI like %
00:22:33evanClass##allocate
00:22:37evanlooks like a typo
00:22:38brixenyeah
00:22:46evanClass#%allocate
00:22:50evanisn't bad
00:23:14brixenI worry about $*@ being confusing
00:23:22evanright
00:23:23brixensince they are prefix sigils
00:23:27evanClass#-allocate
00:23:32evanlooks like ObjC
00:23:36brixen% is an operator, but not often used
00:23:45evanoh oh
00:23:49evanClass#~allocate
00:23:54brixenyeah
00:23:59evan~
00:24:04brixenbut that is a unary op too
00:24:09evanright
00:24:12evanwell, in ruby, they all are.
00:24:22evanoh also
00:24:27evanit's not directly callable obviously
00:24:30evanthats fine.
00:24:40evanbecause it doesn't parse
00:24:52evanbut you'd be able to invoke them directly via bytecode
00:24:58brixencool
00:24:58evanand internally
00:25:37brixen~ isn't bad, I thought about it too
00:26:46brixen~>foo
00:27:20goyox86evan: what do you mean with "hidden" methods (sorry for mi ignorance)?
00:27:39evangoyox86: well, in this case
00:27:49evanMRI actually has a hidden method thats the allocator for a class
00:27:57evanthat you can't define from ruby-land
00:28:09evani'm considering doing the same
00:28:40evanwe've had the need for hidden methods before also
00:28:48evanthat can be called if you know they're there
00:28:50goyox86evan: mmm i see
00:29:11evanbut don't show up in #methods and can't be accidentally overriden/called by user code
00:30:34goyox86evan: got ya, oh seems to be pretty dificult to decide the prefix since in ruby as you said almost every char is used :s
00:30:47evanright
00:30:52evanit shouldn't look terrible either
00:30:56evanthats why i'm asking for opinions.
00:32:09brixenI still like % over ~ since % is not a unary op
00:32:20goyox86% seems to be good to me
00:34:15goyox86people, is there something like http://isitruby19.com/ to keep track of which exts, are supported by rbx?
00:34:35brixennot that we know of
00:34:42brixenyou could start it :)
00:34:45goyox86i think this could be useful
00:36:23goyox86brixen: thats why i ask, today when i ws walking work-home, i was asking myself if RubyInline works in Rubinius for example
00:38:19brixenyeah, someone just needs to do it
00:38:49goyox86brixen: and now i was researching about it, and "why do not keep track of waht works or not in rbx", i'll be researching on it :-)
00:39:50brixenmaybe brightbox wants to do isitrubinius.com
00:41:14goyox86yep
00:41:47goyox86or isitrbx.com :]
00:41:56brixensure :)
00:42:14brixenor isitarrbeexxx.com
01:54:32toulmeanbrixen, evan, I get this exception now running rake test with rubinius head on vanity head:
01:54:33toulmeanno method 'match?' on 3:Fixnum.
01:54:45toulmeando you want a full gist ?
02:00:34toulmeanhmmm. Thinking I should do a gist.
02:01:24toulmeanok here is the gist: v
02:01:26toulmeanhttp://gist.github.com/470351
02:19:17evantoulmean_: thats pretty weird.
02:19:22evandoes it happen everytime?
02:19:39toulmeanevan: yes.
02:19:53evanvery odd.
02:20:37evanhow would a fixnum show up there...
02:20:54toulmeanevan: I think it's the key of the hash ?
02:21:29evanno
02:21:36evanit's the next Hash::Entry object
02:21:41evanor, rather, it should be.
02:21:49evanwhy it's getting a 3 there though...
02:21:59evani'll have to try and repro it
02:22:09evancould you provide me repro steps?
02:22:22toulmeansure
02:22:26toulmeanget the vanity head
02:22:40toulmeangit clone http://github.com/assaf/vanity.git
02:22:43toulmeanthen install gems:
02:22:55toulmeangem install rails redis redis-namespace sqlite3-ruby timecop mocha passenger
02:22:59toulmeanthen run rake test
02:25:06evanok
02:25:13evancould you put those steps at the top of the gist?
02:25:17evanso i don't forget them.
02:25:31evani'll take a look later today, this weekend, or monday.
02:25:32evan:)
02:40:11toulmeanevan: sure
02:41:20toulmeanevan: done.
07:54:50dbussinkevan: hmmm, i'm still getting it here consistently
07:55:05dbussinkthat segfault
07:55:08evancan you run it under gdb and get a gdb backtrace?
07:55:13dbussinki've caught it with gdb now
07:55:55dbussinkevan: https://gist.github.com/9ced3d72e054a664e54f
07:56:48evancan you do "p *obj"
07:58:28dbussinkhmm, it crashed somewhere else now :S
07:58:57dbussinkevan: https://gist.github.com/4c025d5dd354c1d742d3
07:59:02dbussinki still have that one open now :)
07:59:55evanhuh?
08:00:11dbussinkaccidently closed the previous session
08:00:24dbussinkbut ran one again and it's slightly different
08:01:21evanhm
08:02:03dbussinkbut the weirdest thing is still is that if i run the command that rake executes manually, it doesn't crash
08:02:10dbussinkany idea what could be a difference there?
08:02:25dbussinkalready did a rake clean for both rbx and the do_sqlite3 stuff
08:02:32evanhmm
08:05:46evanyou're on 10.6 yes?
08:05:58dbussinkyeah
08:06:50evanhm
08:07:58evandbussink: lets try something.
08:08:27dbussinkok, cool
08:08:39evanin objectmemory.cpp, run_finalizers
08:08:46evanput a return; at the top
08:08:50evanie, don't run finalizers.
08:08:53evansee if that fixes it.
08:09:55dbussinkevan: yeps, doesn't crash then
08:10:18dbussinkso it's related to finalizers
08:10:35evanbefore, we weren't running finalizers for Data objects
08:10:41evanbecause of a few bugs
08:11:29evanI have since fixed that, but clearly made other things surface.
08:11:32dbussinkbut how could the differences running it from rake and the same command by hand be created?
08:11:41dbussinkor be explained
08:12:08evanwell, more code would run
08:12:12evanand thus different GC effects.
08:12:29dbussinkbut rake shells out for this :S
08:12:47evan*shrug*
08:12:58evanif the parser data is freed, and then used again
08:13:02evanthe crash could be pretty random
08:13:10evanbecause we'd be using freed memory
08:13:19evanwhich doesn't always result in crashes
08:13:42dbussinkbut the weird thing is that it crashes consistently for me through rake, but consisntly doesn't crash when the command is run by hand
08:13:45dbussinkbut anyway
08:13:51dbussinkcould do remote debugging if you want?
08:14:35evanhm
08:14:40evanlet me poke around
08:15:25dbussinkevan: btw, i noticed that melbourne is compiled without debugging symbols
08:15:37evanfeel free to fix that
08:31:49dbussinkevan: if i should get some more information out, let me know
08:31:56evank
08:31:59evani'm going to run a few tests.
08:32:54dbussinki'm going to get a shower, guess you might get to bed in the mean while
08:56:56dbussinkevan: back
09:36:26evandbussink: so
09:36:30evani've repro'd it
09:36:32evanminimally
09:36:45evanit's pretty late here
09:36:51evanso i'll hopefully get it fixed tomorrow.
09:36:58evaner. later today :)
10:00:51evandbussink: fixed.
10:00:57boyscoutFix finalizer/C-API handle bug. - 42a550a - Evan Phoenix
10:00:59evanbed time.
10:01:00evannite.
10:05:21dbussinkevan: nite!
10:09:14boyscoutCI: rubinius: 42a550a successful: 3458 files, 13692 examples, 41271 expectations, 0 failures, 0 errors
10:17:58dbussinkevan: for if you wake up, i'm still seeing a segfault :(
10:18:33dbussinkevan: https://gist.github.com/c3cce0cab5a89b39cb49
10:21:41mendelbenjaminhello all, was the screencast from last wednesday recorded?
11:01:44dbussinkpcapriotti: ping?
11:04:45pcapriottidbussink: pong
11:11:06dbussinkpcapriotti: got remark on those rb_throw specs, those hash control flow things aren't really necessary i think
11:11:13dbussinkor there are better ways to do that
11:11:52dbussinkpcapriotti: and that rb_flow broken stuff can probably go too :)
11:12:17pcapriottidbussink: I copied from rb_raise
11:15:06pcapriottidbussink: what's rb_flow?
11:15:23dbussinkpcapriotti: i mean using a hash to spec that control flow there
11:16:14pcapriottidbussink: what's the best way? add a 'fail' after throw in the ruby code?
11:16:30dbussinkpcapriotti: yeah, that's probably a better way
11:17:01pcapriottidbussink: and same for rb_raise?
11:17:02dbussinkpcapriotti: you can also see how the ruby version is specced
11:17:33dbussinkpcapriotti: ah, wait, i think i'm talking about a different thing :
11:17:35dbussink:_
11:17:49dbussinki was talking about http://gist.github.com/470137 line 22 and 24
11:19:06pcapriottidbussink: yes, me too, kernel_spec_rb_raise works the same, that's why I'm asking if you want that to be changed as well
11:20:20dbussinkpcapriotti: ah ok, yeah, probably better to explicitly fail there then
11:21:04dbussinkpcapriotti: you can also return a value there and check the block doesn't return that
11:21:28pcapriottiok
11:22:22dbussinkjust trying to keep quality up, not all specs are as good as they should be
11:22:38dbussinkwhich is annoying because people use it as a reference example too
11:22:46dbussinkwhich is completely understandable
11:22:59dbussinknot blaming you in that regard :)
11:23:50pcapriottidbussink: yeah, I undestand, np :)
11:29:09boyscoutNew spec: rb_class2name should accept a Module argument. - 33e1cc9 - Paolo Capriotti
11:29:09boyscoutFix spec for rb_class2name accepting a Module argument. - 4ac62ed - Paolo Capriotti
11:29:22dbussinkpcapriotti: already applied those patches :)
11:29:46pcapriottidbussink: cool, thanks
11:37:24boyscoutCI: rubinius: 4ac62ed successful: 3458 files, 13692 examples, 41271 expectations, 0 failures, 0 errors
11:51:18pcapriottidbussink: I updated the patch
11:53:18dbussinkpcapriotti: cool, i'll check it out :)
11:54:39dbussinkpcapriotti: ok, cool, looks a lot better imho :)
11:55:08pcapriottidbussink: great
11:55:25dbussinkpcapriotti: or don't you think it does? ;)
11:56:43pcapriottidbussink: yeah, the hask thing was kind of a hack, but the code is so short that it's clear what it's testing anyway
11:56:57pcapriotti*hash
11:57:31dbussinktrue, but i had to think more about it than this implementation :)
12:29:22boyscoutDo not swallow LoadError exceptions when loading extensions. - 76472ed - Paolo Capriotti
12:37:28boyscoutCI: rubinius: 76472ed successful: 3458 files, 13692 examples, 41271 expectations, 0 failures, 0 errors
13:17:27boyscoutBe sure to add debugging information for extensions and same optimization level as rbx uses - 8e3d583 - Dirkjan Bussink
13:25:38boyscoutCI: rubinius: 8e3d583 successful: 3458 files, 13692 examples, 41271 expectations, 0 failures, 0 errors
14:00:15dbussinkfbuilesv: you irc works again? :P
14:33:11boyscoutAdd spec for C API rb_throw. - 74dae4c - Paolo Capriotti
14:33:11boyscoutAdd rb_throw to the C API. - 752c3af - Paolo Capriotti
14:33:11boyscoutThe CAPI specs weren't part of CI anymore do to the move to spec/ruby/optional - 21719ad - Dirkjan Bussink
14:33:16dbussinkpcapriotti: there you go :)
14:33:50pcapriottidbussink: cool!
14:34:05dbussinkpcapriotti: you can ask evan for a commit bit if you want
14:35:47dbussinkpcapriotti: this all you need for qtruby?
14:36:35pcapriottidbussink: not sure, maybe rb_during_gc if it makes sense in rbx
14:36:49dbussinkpcapriotti: why does qtruby need it?
14:36:50pcapriottibeing able to compile it without modifications would be nice
14:37:07dbussinkbecause anything that peeks into the gc of mri directly is probably a no go for rbx
14:37:08pcapriottidbussink: I don't know, I tried asking the maintainer, but he's not responding
14:37:14dbussinkit could be a noop perhaps
14:37:21dbussinka bunch of the gc methods already are
14:38:43pcapriottianyway, right now any nontrivial qtruby application crashes, I'll look into that and see if there's any other missing stuff
14:39:10dbussinkpcapriotti: can you catch it in gdb?
14:39:21pcapriottiI haven't tried yet
14:53:59dbussinkpcapriotti: that could give some valuable information as to what's up
15:00:59boyscoutCI: Commit 21719ad failed. http://github.com/evanphx/rubinius/commit/21719ad51a75b20ccc13e1b0a47eda3c8d3aa54e
15:04:27pcapriottidbussink: btw, it's actually better than I though. The classic Qt tutorials work flawlessly up to the 10th chapter. That means signals and slots are working ok. The 11th tutorial crashes during GC, though
15:04:47dbussinkpcapriotti: do you have a backtrace?
15:04:51pcapriottiyup
15:06:05pcapriottidbussink: http://gist.github.com/470762
15:06:40dbussinkpcapriotti: what's the message above the trace?
15:07:21pcapriottinothing, just SIGSEGV
15:07:26pcapriottiError: signal SIGSEGV
15:08:23dbussinkno address specified?
15:09:04dbussinkguess this is not easy to reproduce right?
15:09:10dbussinkneeding a setup of qt etc?
15:10:32pcapriottidbussink: shouldn't be too hard
15:10:41pcapriottidbussink: what pltaform are you in?
15:10:50dbussinkos x 10.5
15:10:52dbussink10.6
15:11:14pcapriottiuhm, no idea, then :)
15:11:30pcapriottibut with patience, it should be possible
15:11:47pcapriottiyou need to get kdebindings from the kde SVN repository
15:12:06pcapriottiand of course you need qt + headers
15:12:09dbussinkhmm, doesn't segfault with just doing qt stuff?
15:12:17dbussinki could install qt4 relatively easy
15:14:31pcapriottiyes, it's just qt stuff, but qtruby lives in the kde repository
15:14:39pcapriottibut it's possible to build it without any kde stuff
15:17:26dbussinkpcapriotti: could try adding a return at vm/objectmemory.cpp at run_finalizers ?
15:17:32dbussinkso that they don't run
15:17:45dbussinkjust to see if it's also an issue in there
15:18:08pcapriottiok
15:19:57pcapriottidbussink: same thing
15:20:07dbussinkah ok, then it's something else
15:20:27dbussinkpcapriotti: does qtruby do things that depends on having a non moving gc?
15:20:39dbussinkso keeping a reference to some object global?
15:20:41pcapriottidbussink: ah!
15:20:48pcapriottidbussink: yes
15:20:56pcapriottidbussink: isn't that supported?
15:21:02pcapriottiI thought it was
15:21:35dbussinkare the registered through rb_global_variable or rb_gc_register_address ?
15:21:43dbussinkthey registered
15:27:29pcapriottiuhm... I don't think so
15:27:46pcapriottiqtruby maintains map from qt objects to ruby VALUE's
15:30:13pcapriottiso that when it finds a qt object that was already wrapped, it reuses the old VALUE
15:32:00pcapriottiit shouldn't prevent those objects from being GC'ed, btw... it just removes them from the mapping whenever they are collected by using a finalizer
15:33:23pcapriottidbussink: is keeping VALUE's around supported in rubinius?
15:34:43dbussinkpcapriotti: hmm, you register a finalizer for ruby to call?
15:35:37pcapriottiyes
15:35:49dbussinkpcapriotti: how is that set up?
15:35:56dbussinkdunno if rbx supports that already
15:38:30pcapriottidbussink: it's passed to Data_Wrap_Struct
15:40:59dbussinkpcapriotti: do you think you're able to reproduce a smaller test case with this?
15:41:30pcapriottinot sure
15:41:38pcapriottiI'll see what I can do
15:43:49pcapriottidbussink: what kind of thing that depends on having a non-moving gc wouldn't be supported in rubinius?
15:44:25dbussinkpcapriotti: well, rubinius uses handles that should work properly and should be updated when stuff is moved
15:44:39dbussinkbut if you refer to more internal mri structures it's problematic
15:44:53dbussinkif it for examples uses things like RSTRING()->ptr
15:45:16dbussinkor RHASH for example
15:45:53pcapriottiyup, plenty of those :)
15:46:21pcapriottiwhy does rubinius define them at all, if they can't possibly work safely?
15:53:00dbussinkpcapriotti: it should blow up if those are used
15:53:11dbussinkvm/capi/include/ruby.h:356
15:55:04pcapriottidbussink: oh, no, I meant RSTRING()->ptr
15:55:22dbussinkwell, RSTRING()->ptr can be easily replaced with RSTRING_PTR
15:55:22pcapriottiit's actually using RSTRING_PTR
15:55:28pcapriottiok
15:55:29dbussinkah, that's fine
15:55:36pcapriottiso that's not the problem
16:20:06brixendbussink: ping
16:22:46dbussinkbrixen: pong
16:23:35brixenhi
16:23:46brixena note about spec'ing control flow
16:23:51brixendo not use fail
16:24:01brixenuse ScratchPad to annotate the paths
16:24:17brixenand an expectation against the values ScratchPad accumulates
16:24:19dbussinkah ok, any examples of that?
16:24:27brixenyou can see how this is done in break, next specs
16:25:10dbussinkah, well, it's already better than the first version
16:25:20brixensure
16:25:21dbussinkbut i'll also point people at that then
16:25:40brixenbut in general, don't override the fail mechanism for this
16:25:49dbussinkhmm, the guy already left
16:25:50brixenspecs are about data
16:26:35brixendbussink: gotta run for a few, would you be able to check on that CI failure?
16:26:47brixenoh, and nice catch on the capi specs, what was I thinking :P
16:27:10dbussinkbrixen: probably a capi thing that now fails on linux
16:27:23brixendbussink: http://ci.rubini.us/
16:27:27brixenit's only one spec
16:27:27dbussinkbrixen: i'll tag that failing one
16:27:35brixenok
16:27:46dbussinkbrixen: i wasn't seeing increasing spec assertion numbers when this was added :)
16:27:50dbussinkso that got me thinking
16:28:13brixenok, gotta run, bbl...
16:28:16brixenthanks dbussink!
16:37:14boyscoutDon't spec MRI warnings. - acdbf1d - Brian Ford
16:37:25brixendbussink: actually, there you go
16:37:31brixenis out
16:37:38dbussinkbrixen: heh
16:37:43dbussinkbrixen: have a nice day
16:45:27boyscoutCI: rubinius: acdbf1d successful: 3481 files, 14070 examples, 41803 expectations, 0 failures, 0 errors
18:06:58dbussinkevan: ping?