Index

Show enters and exits. Hide enters and exits.

00:07:06jakedouglascan a CallFrame get moved?
00:28:08jakedouglasit looks like it blows up when it's trying to mark the fiber->value() field
00:28:21jakedouglasnot sure how it gets messed up tho
00:28:24slavacall frames don't move in rbx iirc
00:28:42slavawhen would they? stacks are not allocated in the GC heap or anything
00:28:54jakedouglasyea i think i figured out that it's not related to the call frame. gdb was giving me a weird backtrace, i think its full of shit
00:29:49jakedouglasno idea. i'm not a VM genius or i wouldnt be asking stupid questions
00:36:38jakedouglasit indicates an accessor method in the backtrace in the 3rd frame but the method just returns a variable. i supposed its nonsense
00:36:49jakedouglass/method/function
00:38:38jakedouglasbleh. hard to tell what's going on
00:40:05jakedouglasbbl
01:58:40jakedouglassup
02:25:28jakedouglasif(target->value()->reference_p()) {
02:25:50jakedouglasif target->value() is 0x0 how is that true
02:26:44jakedouglasoh
02:27:33jakedouglasTAG_REF is 0x0
02:29:47jakedouglaswhy does it try to mark that
03:09:25jakedouglasah
03:09:28jakedouglasi think i got it
03:12:19jakedouglasyep
03:28:51boyscoutFix GC crash in Fiber. send() can return 0 - don't register it with the GC. - fa02af6 - Jake Douglas
03:28:51boyscoutAdd Fiber#alive? - 39c3bb4 - Jake Douglas
03:55:44boyscoutCI: Commit 39c3bb4 failed. http://github.com/evanphx/rubinius/commit/39c3bb42b477582813e213d4a20538410bbcaef6
06:46:54boyscoutTagged failing Fiber specs. - a64bb3f - Brian Ford
06:55:29boyscoutCI: rubinius: a64bb3f successful: 3498 files, 14388 examples, 42166 expectations, 0 failures, 0 errors
11:02:13mbufI have been able to compile rubinius-1.0.1, but, how do I byte-compile a .rb file?
11:12:36kronos_vanombuf, ruby x.rb creates x.rbc
11:13:46mbufkronos_vano: ruby x.rb executes the script
11:13:55mbufkronos_vano: I have bin/rbx built
11:14:37mbufkronos_vano: ok, bin/rbx creates a .rbc; how do I execute the .rbc ?
11:14:55kronos_vanoFor now you cannot execute rbc without rb
11:15:02kronos_vanodbussink, right?
11:15:57mbufkronos_vano: what do I do after creating the .rbc ?
11:16:00mbufkronos_vano: or how do I use it?
11:16:14jaribyou don't need to think about it. just execute your .rb files as normal
11:16:32mbufjarib: okay
11:17:17mbufjarib: kronos_vano ahh! okay; with the .rbc file, the sys times are shorter
11:17:37kronos_vanoyep
14:59:02Mjiigdoes rubinius have AOT and/or JIT compiling? I wasn't sure from the page i read about it
15:01:29DefilerYes to both
15:01:59DefilerAOT compilation to rubinius bytecode, runtime JIT compilation using LLVM for frequently-taken paths
15:02:18DefilerNo AOT to native code because it is a terrible idea with Ruby
15:03:34Mjiigokay thanks
15:03:41DefilerNo problem
15:03:46Mjiigwhy do you say it's a terrible idea?
15:03:50Mjiigjust out of interest
15:04:01DefilerToo many methods that only get called once, at startup
15:04:08Defilerand too many eval situations you can't compile AOT anyway
15:04:20DefilerSo you'd spend a lot of time compiling all the files and then need to invoke JIT anyway
15:04:57Mjiigi see, i always wondered why no one had tried to compile ruby to machine code
15:05:01Mjiigthanks
15:05:24DefilerYou can do it, you just need the information that is only available at runtime to do it well.
15:05:47Mjiigwhat sort of information?
15:06:07DefilerWhich methods are called how often in which order
15:06:46Mjiigokay
15:06:46DefilerFor example, if 'obj' is always a String in some particular method, you can take out the checks for 'make sure it's a string' and move the alternate case into, basically, a rescue clause
15:06:56Defiler(this is all under the hood, speaking figuratively)
15:07:34Mjiigi know i just wondered
15:32:45brixenjakedouglas: hi
15:32:50jakedouglashey.
15:33:04brixendid you run the specs before the last push last night?
15:33:26jakedouglashmm. i believe so, why
15:33:39brixenthere were two failures, the SyntaxError ones
15:33:42brixenon both linux and os x
15:33:49brixenI tagged them
15:34:01jakedouglasdid I remove the tags?
15:34:04brixenyeah
15:34:15brixenso, just be sure to run the specs
15:34:15jakedouglasuhmmmm
15:34:27brixeneven a clean build run before pushing isn't a bad idea
15:34:34brixensince we try to keep master extremely sane
15:34:43brixenanyway, good catch on the fix!
15:34:56brixenif I'd known it was 0x0 I probably could have clued you in
15:35:07brixendo you know what 0x0 mean from the interpreter?
15:35:12brixenmeans*
15:35:13jakedouglasno
15:35:24brixenthat's how it signals an exception was raised
15:35:29jakedouglasoh
15:35:31brixensince 0x0 can never be a Ruby value
15:35:39brixenyeah, it's pretty slick
15:35:51jakedouglashey im confused about something
15:35:53brixenbut it means you always have to check when you call an interpreter (like send)
15:36:10brixen(like calling send, I should say)
15:36:26jakedouglasi certainly ran the fiber specs before pushing
15:36:33jakedouglasand only got 2 failures
15:36:37jakedouglaswhich i left tagged iirc
15:36:43brixenthey were untagged
15:36:46jakedouglasso im confused where those 2 came from
15:36:57brixengit show c1ba71342f5
15:37:04brixenthat's where they came from
15:37:26brixenso, the SyntaxError on break and return will have to be done in the interpreter
15:37:33brixennot sure how evan wants to do that
15:37:49brixenbut there's no way for the bytecode compiler/parser to know
15:37:52brixenin all cases
15:38:01jakedouglashmm
15:38:04jakedouglasim pretty confused
15:38:08brixenthe interpreter will have to know (maybe it already does) that a Fiber is active
15:38:18brixenand if it handles a break/return, it will have to raise
15:38:27brixenconfused about the tags?
15:38:35brixenare you running this with rvm?
15:38:40jakedouglasi deleted the tags and ran before pushing "bin/mspec spec/ruby/core/fiber". i only had 2 failures at the time. i certainly do have the additional 2 failures you're talking about now.
15:38:58brixenok, you should have *no* failures when you run rake
15:39:12brixenand if working on a smaller set, you should use bin/mspec ci path/to/spec
15:39:20jakedouglasok. ci. ill remember
15:39:21brixenand you should never have failures before pushing
15:39:21jakedouglasthanks
15:39:38brixenyeah, *never* assume you have "known failures"
15:39:46brixenalways run ci :)
15:39:59brixenif we had a "dev" branch, it wouldn't be a big deal
15:40:12brixenbut we keep master sane so we can all drink the freshest coolaid
15:40:14jakedouglasi dont understand how those specs hadn't run and failed when i ran all the fiber ones
15:40:21brixendunno
15:40:26jakedouglasshrug. ill just rake from now on.
15:40:48brixenlike I said, 'rake clean; rake', is a safe thing to do before each push
15:40:53jakedouglas(im making such a fuss because i tried to be very sure of what i was doing, so it annoys me that i fucked it up)
15:41:06jakedouglasanyway
15:41:11jakedouglascan you clarify something else for me
15:41:11brixenalso, if you noticed you pushed something weird, just revert, push, fix it, and push again
15:41:24brixensure
15:41:34jakedouglasi acknowledge that using the 0x0 returned from send is a problem but
15:41:44jakedouglasi think the backtrace i was getting indicated that the crash was coming from
15:41:56jakedouglasFiber::Info::mark which was calling auto_mark
15:42:35jakedouglasand by my reasoning, leaving the field in question unset should cause the same crash when that gets run
15:42:43jakedouglasbut in my testing i couldnt get it to crash
15:42:54spastorinohey guys
15:42:59spastorinobrixen: how are you?
15:43:06brixengdb could have been confused with optimizations
15:43:08brixenspastorino: hi!
15:43:12brixenspastorino: good, and you?
15:43:22jakedouglasok well the code still looks like it could screw it up
15:43:31brixenjakedouglas: but, Fiber::Info::mark may have been the first to access that field
15:43:38spastorinobrixen: fine, looking for evan to ask some things i've talked with Carl
15:43:43spastorinoevan: you there?
15:43:47brixenjakedouglas: and what you got was a sigsev at some offset from 0x0
15:44:00jakedouglasis there any convention that an Object* field must be set to Qnil instead of 0x0 when it's not being used or anything?
15:44:01brixenjakedouglas: like 0x000...21 or something
15:44:09brixen*must* be
15:44:17brixenit can *never* be 0x0
15:44:22jakedouglasok well
15:44:24brixenno reference to a Ruby object can ever be 0x0
15:44:45brixenthat's why it's used as a sentinel value to indicate exceptional return from an interpreter
15:44:52brixenevery ruby method returns a Ruby value
15:44:55brixenthat's ruby semantics
15:45:15jakedouglaslike in Fiber::create, it does not set the 'value_' field
15:45:29jakedouglasis that dangerous/wrong?
15:45:36brixenspastorino: evan is at comic con, he may be in intermittently
15:45:41brixenjakedouglas: le'me check
15:45:53spastorinobrixen: ohh ok
15:46:02brixenjakedouglas: objects used to be init'd to Qnil in the allocator
15:47:20jakedouglasbrixen: so "state->new_object<Fiber>(G(fiber));" would probably set all of it's Object* fields to Qnil?
15:49:12jakedouglasi wonder why evan sets fib->prev_ = (Fiber*)Qnil then
15:50:27brixenjakedouglas: vm/oop.cpp:59 clear_fields
15:50:33brixenhad to trace that through
15:51:16jakedouglasok. so in this case that would certainly set fib->value_ for instance to Qnil?
15:51:42brixenyes
15:52:14brixenat one point, we discussed not init'ing the bodies, but not sure what evan decided on that
15:52:23brixenjakedouglas: gotta run, but I'm working on docs after I finish pack
15:52:32brixenso hopefully it won't be so confusing soon :)
15:52:36jakedouglasok. so it should be safe as long as i dont set it to 0x0 later
15:52:39jakedouglasthanks
15:52:59brixenyes, you must always check that you don't set a reference to 0x0
15:53:12jakedouglasyup.
15:53:19brixenthe only place you'd get a 0x0 from in normal 'rbrx' stuff is the interpreter
15:53:24brixener 'rbx'
15:53:30jakedouglask
15:53:47brixenok, I'll be online in a bit
15:53:52jakedouglask
15:53:56brixenjakedouglas: thanks for hammering out the Fiber stuff! :)
15:54:14jakedouglascertainly. Fiber#transfer is next, seems a little daunting
16:11:54mass-heya brixen
16:42:29evanbrixen: how did the talk go?
16:51:17blowmagesweet!
16:53:06jakedouglasevan: what does it mean when i call a primitive and get "ArgumentError: method 'foo': given 0, expected 1". it seems inconsistent
16:53:33evan|Blaze||: I heard that you volunteered to do most of the development! Thanks man!
16:53:59evanjakedouglas: means you didn't pass in the right number of arguments
16:54:12evani'll bet you're trying to use a default value in a primitive
16:54:17jakedouglasevan: how come sometimes i don't have to pass arguments and other times I do
16:54:17evanwhich doesn't work
16:54:21evanyou can't do
16:54:32jakedouglasevan: i'm not actually. hadn't tried that yet because I saw you weren't doing it.
16:54:34evandef foo(a=1); Ruby.primitive :foo; ...; end
16:54:50evani don't know why then
16:54:54evanyou'd have to show me a concrete example
16:55:39jakedouglasirb(main):013:0> Rubinius::Fiber.new { }.resume
16:55:39jakedouglas=> nil
16:55:42jakedouglasirb(main):007:0> Rubinius::Fiber.current.resume
16:55:42jakedouglasArgumentError: method 'resume': given 0, expected 1
16:56:26jakedouglaswhere does the ArgumentError come from? args.as_array(state)?
16:56:32evanlet me see...
16:56:50jakedouglasi changed the code so im always calling that.
16:56:54evanresue takes an argument
16:56:57evanresume
16:56:57evanrather.
16:57:06jakedouglasokay. so how come I can sometimes call it without one?
16:57:11jakedouglaslike in the example i showed you
16:57:19evanmmm
16:57:57evanok, so this is a bit of a screw up.
16:57:59evanon my part.
16:58:16evanthe primitive fiber_resume takes basically a splat
16:58:31evanit picks apart all the arguments to create the value to pass
16:58:56evanwhats probably happening is that #resume is failing
16:59:06evanbecause prev isn't nil or it's the root fiber
16:59:17jakedouglaswhy does that default to ArgumentError?
16:59:19evanin your above example, the root fiber in the 2nd example
16:59:27evanbecause it fails back to the ruby code
16:59:32evanwhich runs the argument handling
16:59:37jakedouglasah, i understand.
16:59:47evanand says "oh, I'm defined to take one argument, but none were passed, raise ArgumentError"
17:00:06evanthe primitive runs before any argument checking is done by the normal interpreter
17:00:11jakedouglasgot it
17:00:18evanif the primitive fails, then the normal checking runs
17:00:21jakedouglasthanks. ill add the proper business there eventually to keep that from happening.
17:00:28evanso if you change line 22 to 'def resume(*args)'
17:00:30evanit will work fine.
17:01:05jakedouglasand by 'work fine' you mean it'll hit the 'raise PrimitiveFailure'
17:01:10evanyep
17:01:13jakedouglask.
17:02:39jakedouglasamusingly, i just implemented #transfer on a guess and it seems to mostly work
17:06:42evan:)
17:08:10jakedouglasi added a 'root_fiber' to the VM object, make sure it's set during the lazy initialization of Fiber::current, and i set prev to that before doing the swapcontext. is that the correct approach?
17:35:29jakedouglaswhen send() returns a 0 indicating an exception, how do i get that exception and raise it?
18:41:18brixenjakedouglas: you either have to handle the 0x0 or you return 0x0 and the interpreter above you in the call stack handles it
18:42:31brixenjakedouglas: eg http://github.com/brixen/rapa/blob/master/actions/rubinius/pack_code.rl#L53-54
18:43:00brixenwhere coerce is a call to pack::integer above
18:44:53jakedouglasi see
18:47:11brixenjakedouglas: gtg, but I'll try to be around probably after lunch
18:47:17jakedouglasthanks
18:47:21jakedouglascya
18:47:24slavahi brixen
18:48:02goyox86brixen: hi!, how was your talk? :]
18:48:27jakedouglaswow
18:48:45jakedouglasthe rest of the fiber specs pass.
18:48:48jakedouglasyay.
18:49:17goyox86jakedouglas: sweet!
18:49:40brixenhey slava
18:49:47brixenslava: I'm headed to 137
18:49:52brixengoyox86: it went well, thanks!
18:49:59brixengoyox86: I'll post the slides shortly
18:50:07brixenjakedouglas: woot!
18:50:07slavabrixen: is there a walgreens or cvs nearby?
18:50:14slavabrixen: my travel-size toothpaste and shampoo ran out
18:50:15brixenhmm, I'd have to check
18:50:19brixenheh
18:50:28brixenum, google?
18:50:32brixenI'm sure there is one
18:50:38slavaif you want to accomany me on this mission, I can go to the convention center first
18:50:39brixenthere is a whole mall just up the street
18:50:50slavaotherwise we can meet a bit later
18:51:04brixenI'll be here
18:51:49BrianRice-workyes there's a walgreens on grant and broadway
18:51:56BrianRice-work(to slava)
18:52:54BrianRice-workI'm unsure whether it's closer than the mall, though. I'd suggest using a map lookup
18:53:23slavaI looked on the map and it looks like the lloyd center is closest
18:53:24slavathanks guys
18:56:25BrianRice-worksure
19:07:32e-Is it possible to compile rubinius 1.0 or 1.0.1 from rubinius 0.9 rather than MRI 1.8.7 ?
20:09:20jakedouglasdamnit
20:09:43jakedouglasargument and return value handling gets confusing in here.
20:12:42dbussinkjakedouglas: primitive handling?
20:12:57jakedouglasin fibers
20:14:53jakedouglasthat a call can get its return value from a bunch of different places is confusing to implement (for me anyway)
20:17:01jakedouglasbrain melt
20:47:17dbussinkany tips here on debugging ffi stuff?
20:50:07jakedouglaslike what
21:09:58dbussinkjakedouglas: already found the bug :)
21:10:04jakedouglascool.
21:16:14boyscoutFix serializing Float by including proper mantissa - 6906006 - Dirkjan Bussink
21:16:14boyscoutRemove tag for now passing Marshal#dump spec - a785e7e - Dirkjan Bussink
21:16:32dbussinkthat's it for the night :)
21:16:42jakedouglasheh
21:16:51jakedouglasi think my fiber stuff is all working correctly now. cleaning it up.
21:17:20dbussinkjakedouglas: nite!
21:17:24jakedouglascya.
21:21:25slavabrixen: ping
21:22:44BrianRice-workslava, are you guys meeting up this afternoon?
21:24:47boyscoutCI: rubinius: a785e7e successful: 3498 files, 14389 examples, 42167 expectations, 0 failures, 0 errors
21:30:50slavaBrianRice-work: probably
21:31:07BrianRice-workhm, I'd like to join, I suppose. if I can arrange it
21:31:15slavasure
21:32:38slavadan's back in irvine and joe's got another engagement
21:32:50goyox86slava,brixen: did you accomplished the "shampoo/toothpaste" mission? :D
21:32:55slavayes
21:33:26BrianRice-workyeah the guys at the office are talking about seeing joe groff
21:33:39BrianRice-workso, I guess I already know about that engagement?
21:33:58slavaI'm going to meet brixen at the convention center right now
21:34:02BrianRice-workbut care less about that than about language/vm topics
21:34:23slavacan you msg me your phone number?
21:34:26BrianRice-workok. well both of you have my cel#.
21:34:28BrianRice-workoh
21:34:30slavaI don't
21:34:41slavathanks
21:34:45slavawhat time do you finish work?
21:35:31BrianRice-workwhenever I say so, if the reason is good enough. I'd just need to clock in later from home to finish some things
21:36:14slavaok well I'll call you soon then
21:36:18slavagotta go now though
21:36:26BrianRice-workcya
21:44:51BrianRice-workthey'll want me out of the office anyway due to the coughing :P
21:55:16boyscoutImplement Fiber#transfer and other fiber cleanup - 77d214c - Jake Douglas
21:55:16boyscoutEnable :fiber_library feature in mspec and remove some tags for fiber specs - 36dca3c - Jake Douglas
21:55:18jakedouglascrosses fingers
22:08:00boyscoutCI: rubinius: 36dca3c successful: 3498 files, 14391 examples, 42169 expectations, 0 failures, 0 errors
22:08:06jakedouglasyay!
22:16:37dwaitefinally, I've been hoping rubinius would make this change for a while
22:16:44dwaiteit looks like it is finally adding more Fiber
22:16:46dwaite:)
22:17:01jakedouglaslol
22:18:34dwaitethings that make me wish this was not a java-based web application
22:19:03dwaiterather than reporting some sort of nice well-formedness error, a bad XHTML page gives me a server-side NullPointerException, without ever serving up said page's contents
22:19:27dwaitefirst time that took me nearly a day to figure out. Now I just break out xmllint
22:21:31dwaitebut boy, you'd think that would be something they would find in testing. Or in everyday use
23:52:22boyscoutFix Fiber style and GC issue, tag failing specs. - df9f746 - Evan Phoenix
23:52:57evanjakedouglas: you still around?
23:53:13slavahi evan
23:53:19slavabrixen is sitting right next to me
23:53:33slavaanything I should do to him? :)
23:53:36evanhello brixen-via-slava
23:55:51brixenhi evan!
23:55:52slava<brixen>hi evan</brixen>
23:55:58evannhah
23:56:00evanhah
23:56:21brixenevan: Factor just met Perl here
23:56:30brixenbecause slava is changing his name to Factor
23:56:40slavaI'll have to grow that neckbeard out first
23:57:14evanhaha
23:57:16evanwho is Perl?
23:57:22brixenoh man, neckbeards are so in style at oscon
23:57:26brixenalmost scary
23:57:34brixenPerl is a local perl programmer
23:57:40brixeneric wilhem
23:57:42brixen:)
23:58:09evanah.
23:58:12brixenthe joke part is that I introduced slava as "this is Factor"
23:58:17brixenum... oops :)
23:58:19evanaaah
23:58:20evanhehe