Index

Show enters and exits. Hide enters and exits.

17:05:22brixenevan: seems the mongrel abort is a thread/timing issue
17:05:24brixenhttp://gist.github.com/100574
17:05:39brixenit's behavior changed when I ran it under gdb
17:05:54brixenI was able to serve multiple files before getting the abort
17:06:04sbryant_worksuch are threads :(
17:06:17brixennot under gdb, it would almost always abort as soon as I tried to serve a file
17:06:37brixenrun pup.rb and hit localhost:3000/files
17:07:01sbryant_workI'm on my work machine, don't have the project checkout out and built
17:07:06sbryant_workso wouldn't do much good right now.
17:09:34sbryant_workbrixen: have you looked and each thread stack?
17:12:16brixenI haven't
17:12:22brixenworking on something atm
17:12:30brixenwhat would I look for?
17:12:53ruethread apply is simplest if you just want the BTs
17:13:43rueNeed a way to force ext rebuilds
17:13:50sbryant_workThat's a good question, probably some bad locking
17:14:09sbryant_workbut I haven't a clue honestly
17:31:14tilmanbrixen: seen something like this before? http://5fc925552726d5f8.paste.se/
17:39:50brixentilman: um, nope
17:40:17brixenwhat code did you run?
17:40:52tilmana test program for my xmms2 ruby bindings
17:41:05tilmani _think_ i've seen the same weirdness when profiling something like hello world
17:41:06brixenlooks like it might be a bad bignum to double
17:41:29brixenhow long did the run take?
17:41:37tilman0.75s
17:42:25brixenhrm
17:42:55brixenif you give me the code, I can take a look at it
17:43:25brixenI ran -P -e 'p 1' plenty working on it and never saw anything like that
17:43:33brixenso it's probably not just a short run thing
17:43:45tilmanlet me try to build a simpler test case
17:44:37brixenif you create the profiler manually, you could p the lookuptable and inspect it directly
17:45:00tilmanhehe, it went nuts on the first try: bin/rbx -P lib/bin/compile.rb kernel/common/array.rb /tmp/array.rbc
17:45:18tilmanand that surely wasn't a short run :)
17:45:21tilmanbrixen: k
17:46:53brixentilman: may be a gcc thing
17:46:54brixenhttp://gist.github.com/100594
17:47:17tilmannote that this doesn't happen all of the time
17:47:42brixenhm, that sounds like something uninitialized
18:09:14ruebrixen: The mongrel file you gave runs for me
18:10:13rueIncluding navigation
18:10:29rueYou need to reinstall Mongrel if you did not yet
18:13:25brixenrue: yeah, runs for me too
18:13:28brixensometimes
18:13:37brixenI already rebuilt mongrel
18:24:54rueHow "sometimes"
18:25:32rueErm, how often is sometimes?
18:28:18brixenrue: scroll back
18:33:47rueNot under GDB I am now about 50 invocations into clicking around /files
18:34:16rueMaybe it is invocation frequency instead
18:44:59boyscoutReimport test/unit to aid in gem testing - b0c8d5f - Evan Phoenix
18:44:59boyscoutReport Location entries for blocks correctly - 27683bd - Evan Phoenix
18:44:59boyscoutPopulate a StackError with a backtrace - 5d3b39f - Evan Phoenix
18:44:59boyscoutMisc fixes to run the mocha tests - 059efb7 - Evan Phoenix
18:44:59boyscoutAdd new fast path Dir.glob implementation - 876652f - Evan Phoenix
18:53:30boyscoutCI: 876652f success. 1503 files, 7245 examples, 23659 expectations, 0 failures, 0 errors
18:54:21evanbrixen: i'm going to commit a little code to help track this down
18:54:46brixenok cool
18:55:21evanit will abort closer to where the NULL is leaking out
19:03:03rueOK.. a fairly regular repro with file -> cancel -> dir
19:03:11ruefile -> save -> dir seems fine
19:06:11evanok, i've got this code in place
19:06:14evani'm going to try pup.rb here
19:07:38evannot sure what you mean by file or cancel
19:07:49evanpup.rb just has /files and /test
19:08:14rueevan: I get a save dialog when clicking on a file
19:08:16evanok, i got it to happen
19:08:21evanah ah
19:08:22evanok
19:08:24rueIf I cancel, stuff fails
19:08:28rueIf I save, seems to work
19:09:31evanweird, my new code isn't being hit...
19:19:47brixendbussink: when is a new do_postgres gem going to be released that doesn't reassign rb_cTime?
19:20:06brixendbussink: and compiles without warnings? :P
19:20:29sbryant_workHow is rubinius doing these days? I haven't heard much about it recently
19:21:46rueSuper duper, maybe
19:21:52rueIt is a secret
19:21:57sbryant_work:(
19:22:12sbryant_workI tried to help in my spare time but that vanished.
19:22:33rueYeah, not existing is the natural habitat of spare time
19:23:26sbryant_workrue: heh didn't know spare time had a habitat.
19:23:44ruesbryant_work: The status is pretty good, by and large I would say more complete than Shotgun ever was (even though there are still some bugs in running code, probably)
19:24:06rueFor any short- or long-term plans, you will have to ask evan or brixen.
19:24:50dbussinkbrixen: any time soon, i've also been working on getting it to run on windows
19:25:16dbussinkbrixen: i'll check the current next branch i'm working on :)
19:25:31brixendbussink: any tutorial for DO?
19:25:34sbryant_workrue: that's good, I'm glad the project is still alive.
19:26:00brixendbussink: oh, give me your branch and I'll try building a gem from it and installing
19:26:47dbussinkbrixen: http://github.com/datamapper/do/tree/next
19:27:16dbussinkbrixen: it also has a bunch of shared specs that run against the adapters
19:27:26dbussinkand shows a bunch of the api
19:27:58brixendbussink: so what is the easiest way to build a do_postgres gem from this?
19:28:18dbussinkbrixen: switch to the next branch and do a rake gem
19:28:36brixenk
19:28:41dbussinkyou need data_objects installed first, which is also available in that repo
19:29:56ruesbryant_work: Kicking, indeed
19:30:06dbussinkbrixen: is the gem timeout still an issue when installing?
19:30:15sbryant_workrue: any low hanging fruit out there?
19:30:18brixendbussink: nope
19:30:38rueGem works nicely, so far as Gems can
19:30:43brixendbussink: I've got do_postgres to build, except I have to remove the assign to rb_cTime
19:31:21ruesbryant_work: There are some specs that are failing, might have some relatively easy fixes there
19:31:47dbussinkbrixen: hmm, i didn't push that?
19:31:55sbryant_workrue: I'll check around there
19:31:58brixenis there a way to tell gem install to just continue where it left off before it failed?
19:32:38rueProbably not? Although I do not think it is cleaning build dirs or something
19:33:17drbraingem install will skip deps and so-forth, but it'll always install everything for a named gem
19:33:25drbrainI think as of 1.3.2 it nukes the destination directory
19:33:47drbrain... named on the command line
19:43:29brixendbussink: http://tinyurl.com/cy5ova
19:43:46dbussinkbrixen: yeah, i saw it
19:44:31brixenI just installed data_objects-0.9.12 that I built from your next branch
19:44:44dbussinkbrixen: SystemCallError: dlopen(/Users/dirkjan/Documents/projects/rubinius/gems/1.8/gems/do_postgres-0.9.12/lib/do_postgres_e xt.bundle, 10): Symbol not found: _rb_cstr_to_dbl
19:44:50dbussinkthat's where i'm at now
19:45:04dbussinki grabbed extlib/next too btw
19:45:41brixendbussink: yeah, I just fixed that stuff
19:45:46brixenhaven't pushed yet
19:46:05dbussinkbrixen: ah ok
19:46:11dbussinkyou got to that point too?
19:46:17brixenyay, just installed do_postgres-0.9.12
19:46:24brixenhaven't tested it yet :P
19:46:30dbussinkhehe
19:46:36brixendbussink: I'll push this stuff
19:46:55dbussinkbrixen: how far is it from running rspec specs?
19:47:12brixenhm, good question
19:47:24brixenI've got profiler output from these 2 gem installs too
19:47:39brixenString#[] is taking quite a bit of time
19:47:45dbussinkbrixen: ah, well, the require 'data_objects' took ages for me
19:47:49brixenand Kernel#===
19:48:05brixendbussink: how long is ages?
19:48:10brixenI'll give it a try
19:48:22dbussinkbrixen: well, probably around 20 - 30 secs i think
19:49:29brixenah, that's nothing :P
19:50:24dbussinkbrixen: you got the fix? i wanna try whether i can fire a query and get a result :)
19:52:31brixenugh
19:52:48brixenis rake 0.8.4 what is causing all the build commands to spew forth now?
19:54:32brixenyes, it is
19:54:34brixenwtf
20:03:36boyscoutSome capi fixes to compile do_postgres gem. - 2c016fa - Brian Ford
20:08:35boyscoutCI: 2c016fa success. 1503 files, 7246 examples, 23660 expectations, 0 failures, 0 errors
20:10:05dbussinkbrixen: http://gist.github.com/100697
20:16:09brixenhmm ok
20:17:27brixendbussink: when is a new extlib gem being released? at the same time as the DO 0.9.12 gems?
20:17:39dbussinkbrixen: probably yeah
20:17:52dbussinkbrixen: if we can fix stuff in there that would be cool
20:18:02dbussinkbrixen: i'm planning on at least doing a release around euruko
20:18:37dbussinkat least with windows one click installer support and hopefully full jruby/jdbc support
20:18:44dbussinkadding rubinius to that would be cool too :)
20:19:07brixenindeed :)
20:19:13brixenthe coolest ;)
20:21:58dbussinkbrixen: of course ;)
20:33:06evanbrixen: i'm just running with rake -q now
20:33:11evanmostly
20:34:26brixenevan: ahh ok
20:34:42brixenI'll just chalk it up as another reason to use Tap :)
20:34:57brixenevan: so, I just moved ByteArray under Rubinius
20:35:09brixenI think I should do that for the rest of "our" classes
20:35:18brixenLookupTable, MethodTable, etc
20:35:22brixenwhat do you think?
20:37:08dbussinkbrixen: latest extlib actually moved ByteArray too as a good citizen :)
20:37:20dbussinkbrixen: any idea on that backtrace btw?
20:37:36brixendbussink: haven't looked into it yet
20:37:53brixendbussink: nice you moved BA, but we need to as well
20:38:29dbussinkbrixen: yeah, agree with all rubinius specific stuff being moved btw
20:40:14evanbrixen: yeah
20:40:15evanwe should.
20:46:12brixenevan: ok, I'll do it after lunch
20:46:44evani'm working on the mongrel problem now.
20:46:47evanit's... weird.
20:51:28ruedbussink: Em, is that supposed to recurse?
20:52:07rueOh, nm, I noticed the horrific magic
20:54:43evanok, i've found the first data point on the mongrel crash
20:54:51evanreraise is being called when there is no existing exception
20:56:25evanI'm testing why now.
21:08:30evanok, pretty sure i've solved it.
21:11:31evani'm leaving in some guards to aid in debugging of this, if it comes up again.
21:21:16rueMehee.. Sergeant Semicolon
21:23:06dbussinkbrixen: gcc 4.4 is out, maybe it introduces new fun ;)
21:23:24brixendbussink: no doubt it does
21:23:48brixenevery new release of gcc causes many kittens to die :(
21:24:05evanbrixen: ok, mongrel is fixed.
21:24:12brixensweet!
21:24:16evanabout to push the fix
21:24:28evanwhat happened was
21:24:36evanensure was entered because of a return or break
21:24:48evanthe ensure code ended up calling clear_exception
21:24:56evanthen the ensure code did reraise at the bottom
21:25:02brixenahh
21:25:11evanso i've changed clear_exception to only clear when raise_reason is cException
21:25:16brixeninteresting it didn't show up till now
21:25:19evanie, ruby code can't clear return/breaks
21:25:21evanyeah
21:30:12rueWait, ensure can re-raise?
21:31:27evancourse
21:31:28evanthey have to
21:32:00evanif they run as an exception is being raised, reraise the exception to keep it going
21:33:02boyscoutFix reraising off non-Exception raise values - 3d7bc75 - Evan Phoenix
21:33:24rueYeah, I meant from the Ruby side?
21:33:49evanwell
21:34:05evannot explicitly
21:34:14evanbut the reraise instruction is used to do this
21:34:20evanwhich is the "Ruby side" for me
21:38:26rueAha
21:42:06boyscoutCI: 3d7bc75 success. 1503 files, 7246 examples, 23660 expectations, 0 failures, 0 errors
21:58:41evanbrixen: doing a spec run
21:58:59evanthere are 45486 methods that have less than 5 locals and less than 10 stack entries
22:00:56evanoh wait.
22:00:58evanhah
22:01:00evani fucked it up...
22:01:23evanthats the total number of methods
22:01:26evansilly conditionals.
22:02:24evanwowzers
22:02:32evanit's now 43918
22:03:09rueWonder if the space tradeoff to scan instance vars from the first definition of a class into an index would be worth it
22:03:27evanwe're going to do that
22:03:30evanhave always planned to
22:03:37evanit's definitely worth it
22:03:48evanbecause the ratio of classes+methods to instances is very high
22:04:19brixenevan: how many methods in kernel?
22:04:28evandunno off hand
22:04:32evani put this code directly into the VM
22:04:37evanso it's firing on all methods as I run them.
22:04:45brixenthat number seems huge
22:04:51evanthats what I thought
22:04:54brixenis it counting blocks?
22:05:16evanyeah
22:05:20brixenahh
22:05:25brixenthat makes sense then
22:05:25ruePlus class/module/script?
22:05:40evanrue: I would think so
22:05:45evanwe won't know until we try
22:07:32evanbrixen: it doesn't appear to make much of a difference though
22:08:13brixenyou mean the special interp?
22:08:45evanhaving another template that contains VariableScope and CallFrame at fixed sizes
22:08:48evanie, no alloca
22:08:56brixenok
22:09:25brixendid you look at it in shark or just from the total spec run time?
22:11:05evantotal spec runtime
22:11:13rueAlloca is pretty damn fast
22:11:13evani'm writing a small benchmark now.
22:11:29evanyeah
22:11:42evanwe're just curious to test it's profile
22:11:53evanperformance wise
22:14:03evanthe performance different is the equavilant of thermal noise
22:14:06evandifference
22:14:47brixenwell, good to know
22:15:06brixenI wonder if moving all these constants under Rubinius is going to negatively impact perf
22:15:31evanwe'll cross that bridge when we get to it
22:15:42brixenyeah
22:15:43evanwe could speed up constants accessed under the Rubinius module
22:15:53brixenright
22:16:26evanhm, ok
22:16:38evani ran 5 runs with small frames
22:16:39evanand 5 without
22:16:56evanon a loop of 10 million iterations
22:17:09evanthe difference of a null loop is about 0.2 seconds
22:17:27evanand for calling a method that adds to locals
22:17:46evanagain, about 0.2 or 0.3
22:17:50evanwith it varying a lot
22:17:56brixeninteresting
22:18:12evansometimes non-small was faster than small
22:18:18brixenthis is how many calls there were compiling data_objects gem to require it the first time: 224,216,111
22:18:24evanthat tells me i need to either run more iterations to reduce the noise
22:18:27evanor it's all noise
22:19:11brixenevan: what does the machine code look like for the two cases?
22:19:31brixenif it's just a couple insns difference, it's probably all noise
22:19:40evanit's going to
22:20:06evansince the allocas will likely have an extra add, then an add of esp
22:20:07evanthats it.
22:20:16brixenah, ok
22:20:26evanversus collapsing the add of esp into the prologue in the small case
22:20:35evanso all we save is 4 adds
22:20:41evanthats my guess
22:20:46evani should check out the machine code though.
22:21:04brixenI wonder if the cpu then parallelizes that
22:21:22evanit's certainly got multiple ALUs
22:21:26evanso the adds are done in parallel
22:21:42rueThere are tcmalloc and hoard, too, but dunno if either have usable components
22:22:35evanfor this? probably not
22:22:43evansince we're literally as far down as we can go
22:23:05evanunless we wire static ram onto machines and use that somehow
22:36:47evanhttp://gist.github.com/100777
22:36:51evanif anyone is curious
22:37:36brixencool
22:38:05evanalright, off to pick up my car
22:38:06evanbbiab.
22:38:11brixenok
22:38:32brixenrunning an errand, bbiab too