Index

Show enters and exits. Hide enters and exits.

00:06:52d2dchat leaves the room.
00:07:39d2dchat enters the room.
00:24:19d2dchat leaves the room.
00:25:44benstiglitz leaves the room.
00:25:49imajes leaves the room.
00:26:15seydar enters the room.
00:29:51benstiglitz enters the room.
00:29:55walks leaves the room.
00:40:07seydar leaves the room.
00:52:35benstiglitz leaves the room.
00:52:38imajes enters the room.
00:56:29AndrewO enters the room.
01:00:19jtoy enters the room.
01:03:00trythil leaves the room.
01:07:17webmat leaves the room.
01:07:52dctanner enters the room.
01:08:19dctanner leaves the room.
01:23:52lstoll leaves the room.
01:24:12evanok, just pushed more cpp code.
01:25:38agardinerneat!
01:25:44agardinergoes to look
01:27:05jtoy leaves the room.
01:32:04evanit's got libev code now
01:32:09evanit's not all wired into the VM
01:32:18evanbut it's got fleshed out C++ classes to perform the work we want.
01:32:29agardineryeah, looks a lot neater
01:32:36agardinerclasses really help the organisation
01:32:39evanyeah
01:32:42djwhittevan: just curious how far are you through the C++ conversion at this point?
01:33:10evannow that libev is working
01:33:14evani'm going to move on to marshal
01:33:25dleeare you rewriting all of the VM into C++?
01:33:25agardinerexcellent
01:33:29dleeor just certain sections?
01:33:36evandlee: all
01:33:44dleeyay
01:33:55dleei like C++ better than C
01:34:08evanmarshal, then execution, then primitives.
01:34:11dleewhat's your reason for rewriting it?
01:34:18evani've already begun to abstract things
01:34:40evanlike the libev code just calls the call() method with information
01:34:50evanso the libev code is now abstracted away from knowing about Channels even
01:35:04agardinerdlee: see http://betterruby.wordpress.com/2008/04/11/shotgun-rewrite-underway/ for a summary
01:35:12dleeagardiner: thanks
01:35:15agardinernp
01:35:41evandlee: the big original reason was that i was having to basically completely redo call conventions
01:35:47evandlee: and we had no tets
01:35:51evantests
01:36:11evanthe current shotgun is a patched up architecture of my original thinking
01:36:14agardinerhehe
01:36:15evanwhich has changed in the last 2 years
01:36:42dleei remember watching a talk you did where you said you've gone through several rewrites
01:36:43evanso the C++ VM flushes all the cruft out, standardizes things, abstracts things, and tests them.
01:36:45dleewhat # is this?
01:36:47evanum.
01:36:48evanlets see.
01:36:52crafterm enters the room.
01:36:59evanthis is #4
01:37:04agardinermorning crafterm
01:37:14craftermagardiner: gday mate, hows it going?
01:37:21agardinergood! you?
01:37:27craftermgood mate, all well!
01:38:01dleewill it be over once you're done with primitives?
01:39:04evani'm leaving subtend til the end
01:39:08evanbecause it needs the most work
01:39:16evanthe current subtend arch is flawed.
01:39:25evanso i'm going to get everyone up and running on the new VM
01:39:28evanthen tackle subtend.
01:39:39evansince we don't use subtend a lot right now anyways.
01:40:18dleewill subtend be a C API still?
01:40:22evanagardiner: good write up
01:40:24evandlee: yep
01:40:31agardinerthanks!
01:40:35evansubtend will still be a C api for extensions to use
01:40:57dleewill you make subtend++? :)
01:41:03evana good question
01:41:34dleemaybe we'll just wait for rewrite #5
01:41:39dleedone in garnet!
01:46:56evanrice, which is a C++ api for ruby, was linked to a couple days ago
01:47:00evanthere is another C++ wrapper for ruby
01:47:13evansince there is no 'standard', we'll see.
01:53:48stepheneb enters the room.
01:53:58ttmrichter enters the room.
01:56:10lopex leaves the room.
02:05:57jtoy enters the room.
02:08:46jtoy leaves the room.
02:12:51yugui enters the room.
02:14:28dewd leaves the room.
02:16:58agile enters the room.
02:17:29GMFlash leaves the room.
02:17:38GMFlash enters the room.
02:23:59jtoy enters the room.
02:25:48VVSiz_ enters the room.
02:28:38VVSiz leaves the room.
02:34:53stepheneb_ enters the room.
02:36:52stepheneb leaves the room.
02:40:27madsimian enters the room.
02:42:06_VVSiz_ enters the room.
02:44:00KirinDav leaves the room.
02:44:06VVSiz enters the room.
02:45:42yugui leaves the room.
02:47:21wubo leaves the room.
02:50:51evanar has been c++ized
02:53:07VVSiz leaves the room.
02:53:34VVSiz enters the room.
02:54:55fbuilesv enters the room.
02:59:11djwhittah, I see. the test runner thing is generated
02:59:45vborja enters the room.
02:59:47djwhittI was slightly confused by the giant red section in the diff :)
03:00:03_VVSiz_ leaves the room.
03:00:28VVSiz_ leaves the room.
03:07:30evanheh
03:08:03tarcierihey evan... MenTaLguY was running into a race implementing Actor.receive and I was wondering if you had suggestions for how to solve it
03:08:18evanum..
03:08:21evanwhats the race?
03:09:18tarcierithe race is waiting for both inter-Actor messages and the timeout message from Scheduler.send_in_microseconds... the timeout should override the other message if it fires first, but the other message will still live on the Channel
03:09:41tarcieriOne solution is to tag the timeout messages with UUIDs, but uhh, yeah, same problem with sending arbitrary objects
03:10:39evanhm
03:10:41tarcieriit's not so much a race as how to implement the proper message handling semantics
03:10:50evancould you detail the events as they occur?
03:10:51evanto me
03:10:54evani don't see the race yet.
03:11:19tarcieriwell, the main problem I suppose is:
03:11:43tarcieriboth a normal message and a timeout message are delivered to the channel before an Actor resumes
03:12:17tarcieriReceiving a normal message overrides the timeout
03:12:24evanoverrides?
03:12:36tarcieriFor which handler Actor.receive calls
03:12:52tarcieriIf it got the message before the timeout, the timeout handler isn't called, and the message handler which matches that message is
03:13:09tarcieriThe timeout message in the channel is ignored
03:14:28tarcieriI mean, the easiest way to fix that is an ID for the current Actor.receive call... and flag the timeout message with that ID... if the ID doesn't match the one for the present call the message is ignored
03:15:17evani don't seem to know enough about the Actor code to understand the problem
03:16:13tarcieriActor.receive is selective... you handle it a set of filters which each match to a particular action... and you can also hand it a timeout which maps to a particular action
03:16:44tarcieriIf it gets any message which matches the filter before the length of the timeout, then the action for the filter is called
03:17:52tarcieriI believe MenTaLguY was running into a case where he was getting both a message that matched the filter and a timeout message before the Actor was resumed, which resulted in the next call to Actor.receive thinking a timeout had fired
03:18:24tarcieriIt somehow needs to clear any timeout messages in the Channel after a call to Actor.receive
03:18:44evanyou can clear a channel
03:18:56tarcieriSelectively clear?
03:19:48tarcieriLike uhh, Channel#delete_if or something
03:21:16evanwhat would the condition be?
03:21:33evanwhats putting stuff in the Channel for the timeout?
03:21:34tarcieriIf it's a timeout message
03:21:41tarcieriScheduler
03:21:52evanok o.
03:21:55evanok ok.
03:22:04evanso the same channel is used by the remote Actor and be the scheduler
03:22:10evanit's handed to both places
03:22:19tarcieriYeah
03:22:22evanbut there is times where both sides will still fire.
03:22:27tarcieriyes
03:22:52evanok, i see the use of Ids now
03:23:05evanyou'd know to discard something in the Channel if it's not your id
03:23:16tarcieriSo if Actor.receive gets a message, it needs to clear the timeout if it was received, without clearing any other inter-Actor messages
03:23:34evani guess the remote side can't cancel with the Scheduler
03:23:37evanthat's backwards.
03:23:49evanright.
03:23:55tarcieriWell, it'd have to run the Mailbox filter
03:24:01tarcieriTo know if the message actually matched
03:24:05tarcierithat'd be bassackwards
03:24:29evanthere's not much I can think of to do to prevent the race at the Scheduler level
03:24:41trythil enters the room.
03:24:45KirinDav enters the room.
03:25:08tarcierievan: about all I can think of would be a non-"blocking" receive for Channels
03:25:17evanyou can do that too
03:25:21tarcierioh yeah?
03:25:25evanjust read the Channel's value directly
03:25:31tarcierioh
03:25:32tarcierihmmm
03:25:47evanit's a List, so you'd need to shift it off if you want remove it
03:25:55tarcieriyou could just have it process all messages in the Channel whenever Actor.receive gets any messages
03:26:04tarcieriand discard any timeouts... leaving the channel clean for the next call
03:26:13evanmaybe having the Scheduler itself sending messages directly to Actor's is the wrong way
03:26:22tarcierinah, ^^^ is pretty clean, I think
03:26:34evanmaybe there should be a Thread thats calculating the min time to sleep
03:26:44evanand can control the flow of things better
03:27:00evanwho 'owns' the Channel?
03:27:04evanthe receiving Actor?
03:27:04tarcierithe Actor
03:27:06tarcieriyeah
03:27:30evanwell, seems like adding ids would be useful
03:27:34tarcierithe problem really stemmed from having a bunch of messages sitting around in the Channel between Actor.receive calls
03:27:39evanbecause people will just end up adding them on top anyway
03:27:47tarcieriyeah
03:27:49evanso give them ids to use, and you can use them internally
03:27:54tarcieribut I mean
03:28:05tarcierihaving it send you the arbitrary object of your choice accomplishes that and more
03:28:15evanright
03:28:18evani was about to say that
03:28:23lstoll enters the room.
03:28:27evanhave Scheduler take an object at schedule time
03:28:31tarcieriyou can have a common method on all those objects to handle the event
03:28:32evanand spit it back on the Channel later
03:28:41evanesp. since the time value is nil, ie, useless
03:28:48tarcieriyeah
03:29:10tarcieriMenTaLguY also noted it means nil can't be an inter-Actor message that way
03:29:19evanright
03:29:19dlee enters the room.
03:29:30evanthats something i've been thinking about changing
03:29:52evanmaking it so that whenever the Scheduler puts something on a Channel, it puts on a like a Scheduler::Value object
03:29:56evanor something
03:30:06evansomething that you can use to tell what kind of thing this is from
03:30:15tarcieriwell, again an arbitrary object would work
03:30:20tarcieriyou could have...
03:30:21tarcieri:timeout
03:30:25tarcieriand T[:actor, msg]
03:30:28evanin an array?
03:30:32tarcierierr, Tuple
03:30:33tarcieriheh
03:30:46evanyeah, tuple is the cheapest to do that with
03:30:58evantuple, object with a few ivars, array
03:31:03evanis the expense order
03:31:56tarcieriyeah cool
03:32:18tarcieriwell I'll see if I can implement timeouts properly by just clearing the channel between Actor.receive calls
03:32:59evanok
03:33:10evanwhen you get a chance
03:33:24evanyou should email me a list of your ideal scheduler operations
03:33:30evanso that I can be sure that we've got everything
03:33:48tarcieriI mean, it's really just being able to pass an arbitrary object to be sent on a given event
03:34:33evanyeah
03:38:01wmoxam enters the room.
03:38:45obiejuan leaves the room.
03:40:43enebo leaves the room.
03:44:34stepheneb_ leaves the room.
03:44:56stepheneb enters the room.
03:57:56stepheneb_ enters the room.
04:00:55wmoxam leaves the room.
04:01:00obvio171 enters the room.
04:05:32obvio leaves the room.
04:12:32crafterm leaves the room.
04:18:16d2dchat enters the room.
04:18:31stepheneb leaves the room.
04:18:59KirinDav leaves the room.
04:19:28tarcierievan: ever figure out what was up with libev?
04:19:38GMFlash leaves the room.
04:19:48GMFlash enters the room.
04:22:31enebo enters the room.
04:26:00ezmobius leaves the room.
04:30:09dlee leaves the room.
04:32:06xif leaves the room.
04:32:24elight enters the room.
04:32:44AndrewO leaves the room.
04:33:48crafterm enters the room.
04:38:18xif enters the room.
04:44:25MenTaLguY enters the room.
04:44:28KirinDav enters the room.
04:47:00enebo leaves the room.
04:58:55KirinDav leaves the room.
04:59:35MenTaLguY leaves the room.
04:59:54MenTaLguY enters the room.
05:00:49KirinDav enters the room.
05:01:54kw enters the room.
05:03:08wmoxam enters the room.
05:26:40xmlhacker leaves the room.
05:26:59xmlhacker enters the room.
05:28:25RyanTM leaves the room.
05:28:33KirinDav leaves the room.
05:33:44wmoxam leaves the room.
05:39:55yugui enters the room.
05:40:20elight leaves the room.
05:40:59Gerardo enters the room.
05:41:19Gerardohey brixen, rue
05:43:54dysinger leaves the room.
05:44:57imajes leaves the room.
05:48:33Gerardo leaves the room.
05:50:16dysinger enters the room.
05:51:49gerardo enters the room.
05:53:20brixenGerardo: sup?
05:53:52GerardoI was fixing some problems in shotgun/external_libs
05:54:15GerardoI sent a patch for ltmain.sh
05:54:43Gerardobut, maybe it would be a better idea to patch the script that generated ltmain.sh
05:55:06brixenk
05:55:07Gerardothe problem is, I can't find it in the repository
05:55:10gnufied leaves the room.
05:55:15brixenI see LH update got rolled out
05:55:45brixenGerardo: what ticket number?
05:55:56Gerardo#493
05:57:56brixenhmm, ok
05:58:41brixenI'm actually in the middle of doing taxes atm, so I can maybe answer an easy question
05:58:43be9 enters the room.
06:00:13Gerardojust if the patch for ltmain.sh is ok
06:00:43Gerardoor if the the script that generates ltmain.sh should be patched. But then, it should be uploaded.
06:00:46yugui leaves the room.
06:00:47GerardoI suppose
06:02:19GerardoI'm about to go to bed
06:02:28Gerardotalk to you later
06:11:45boyscout2 commits by Adam Gardiner
06:11:46boyscout * Define __ivars__ to return nil for classes without ivars; e579074
06:11:47boyscout * Fix exception handling in breakpoint/debugger; d3df0d9
06:12:10rueMeh, I feel like hell
06:12:28agardinernot well?
06:12:57rueReally tired the last two days. Yesterday I was only awake for like 8 hours. Going to the doc tomorrow
06:13:31agardiner8 hours! that's not like you...
06:18:26ezmobius enters the room.
06:22:34rueIt is about 10 hours short :P
06:23:08agardinerhmmm... maybe that's why you got sick?!? ;-)
06:23:46rubuildius_ppcAdam Gardiner: e579074b4; 1995 files, 6503 examples, 22643 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/180902
06:29:39stepheneb_ leaves the room.
06:30:05rueNah
06:33:08benburkert leaves the room.
06:48:10hornbeck leaves the room.
07:00:05mentz enters the room.
07:00:26jero5 leaves the room.
07:02:50KirinDav enters the room.
07:16:20trythil_ enters the room.
07:16:21trythil leaves the room.
07:16:59rby enters the room.
07:17:34benburkert enters the room.
07:18:37rby leaves the room.
07:21:56KirinDav leaves the room.
07:30:38dysinger leaves the room.
07:35:48benburkert leaves the room.
07:37:24benburkert enters the room.
07:44:08yugui enters the room.
07:45:02yugui leaves the room.
07:52:42wycats_ leaves the room.
07:54:01d2dchat leaves the room.
07:56:21therealadam leaves the room.
07:58:20therealadam enters the room.
08:01:01dlee enters the room.
08:14:02Maledictus enters the room.
08:15:19wycats enters the room.
08:16:43kw leaves the room.
08:16:43therealadam leaves the room.
08:17:16therealadam enters the room.
08:18:08thehcdreamer enters the room.
08:22:16rudebwoy leaves the room.
08:26:33trythil_ leaves the room.
08:31:45agardiner leaves the room.
08:35:01anonuser leaves the room.
08:35:06anonuser enters the room.
08:42:46Skip enters the room.
08:46:54kevwil enters the room.
08:47:23kevwil leaves the room.
08:52:22dlee leaves the room.
08:55:06ezmobius leaves the room.
08:55:31octopod enters the room.
08:56:55lstoll leaves the room.
09:01:01crafterm leaves the room.
09:01:39w1rele55 enters the room.
09:02:30dysinger enters the room.
09:04:33mutle enters the room.
09:08:05TheVoice leaves the room.
09:10:46OnO enters the room.
09:11:26cypher23 enters the room.
09:11:35mentz_ enters the room.
09:14:17benburkert leaves the room.
09:17:32mentz leaves the room.
09:26:34TheVoice enters the room.
09:26:38TheVoice leaves the room.
09:37:31dysinger leaves the room.
09:52:05BlackEdder enters the room.
09:56:14qwert666 enters the room.
09:56:57antares enters the room.
10:03:18dewd enters the room.
10:06:41lstoll enters the room.
10:17:38anon enters the room.
10:17:57anonuser leaves the room.
10:24:05Arjen_ enters the room.
10:38:41rubuildius_ppc leaves the room.
10:47:04naeu enters the room.
11:04:37imajes enters the room.
11:09:05jtoy leaves the room.
11:10:25mutle leaves the room.
11:10:49mutle enters the room.
11:33:30obvio leaves the room.
11:36:54obvio enters the room.
11:39:26webmat enters the room.
11:44:24imajes leaves the room.
11:48:33bthatswho enters the room.
11:50:51benny leaves the room.
12:00:58BlackEdder leaves the room.
12:03:13naeu leaves the room.
12:26:26obvio171 enters the room.
12:28:48jtoy enters the room.
12:30:33hornbeck enters the room.
12:40:24obvio171_ enters the room.
12:43:38ctennis leaves the room.
12:43:55ctennis enters the room.
12:44:14ctennis leaves the room.
12:44:16obvio leaves the room.
12:47:27naeu enters the room.
12:53:22benny enters the room.
12:55:45obvio171 leaves the room.
13:02:58ctennis enters the room.
13:04:28wdperson enters the room.
13:11:41fbuilesv leaves the room.
13:11:53jlindley leaves the room.
13:14:37rubuildius_ppc enters the room.
13:15:21RyanTM enters the room.
13:23:05gnufied enters the room.
13:26:24Skip leaves the room.
13:30:33rubuildius_ppcAdam Gardiner: e579074b4; 1995 files, 6503 examples, 22643 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181011
13:46:48be9_ enters the room.
13:47:48Cosmos95 leaves the room.
13:51:01jlindley enters the room.
14:04:00stepheneb enters the room.
14:04:31BlackEdder enters the room.
14:05:17sudoer enters the room.
14:06:37webmat leaves the room.
14:06:56webmat enters the room.
14:07:48madsimian leaves the room.
14:09:31sudoer_ enters the room.
14:09:41yaroslav enters the room.
14:11:53JimMc_ enters the room.
14:12:31JimMc enters the room.
14:13:11agile leaves the room.
14:15:50divoxx leaves the room.
14:16:25agile enters the room.
14:18:59JimMcAllright people
14:19:24JimMchave a proposal to update installation
14:19:49JimMcchange to allow a build on ubuntu 7.10
14:19:58JimMchttp://pastie.caboo.se/181029
14:20:26JimMcSorry should be more clear, to update installation instructions
14:20:47jtoy leaves the room.
14:23:38JimMcI believe the term is "patch"
14:23:52JimMcAnyone else here?
14:23:58JimMchello?
14:24:03JimMc(;-;0
14:25:00antaresJimMc: let me see your pastie first
14:26:12sudoer leaves the room.
14:27:03antaresJimMc: I think build-essentials is a good candidate, too
14:27:32antaresJimMc: at least it has gcc, g++ and stuff all in one package with correct version dependencies
14:27:49wmoxam enters the room.
14:29:34be9_ leaves the room.
14:31:50macournoyer enters the room.
14:32:03JimMcantares: Sorry
14:32:10JimMcdidn't think anyone was there
14:32:20antaresJimMc: np :)
14:34:09JimMcreplace g++ with build-essential
14:34:20JimMcsince it contains g++ already
14:35:12JimMcupdated http://pastie.caboo.se/181029
14:36:28JimMcIt was such a pain trying to figure out why it wasn't building
14:36:32Maledictusdoesn't libreadline5-dev pull the non-dev version automatically?
14:37:28JimMcoops, sure does
14:37:46antaresMaledictus: it does, I can see it in dependencies with apt-cache show
14:38:31Maledictushmm, aptitude here says that readline-common collides with libreadline5
14:39:09dbussinkJimMc: bison needs to be in the list too
14:39:35JimMcForgot about that
14:39:49JimMcI installed that before for something else
14:39:53dbussinkthere's even a dedicated section on that in the help :P
14:41:35JimMcAnd readline-common does say it conflicts with libreadline4/5
14:42:09JimMcSo new & improved version http://pastie.caboo.se/181029
14:43:53JimMcShould result in a smooth build
14:43:58antaresJimMc: you want this added to Lighthouse page or what?
14:45:23wmoxam leaves the room.
14:45:55JimMcSur
14:45:58JimMcsure
14:46:06JimMcisn't that why I'm here
14:46:11JimMctalking to you guys
14:47:19JimMcone minute
14:48:00JimMcJust signed up, I need to create a ticket for this dont I?
14:49:56antaresJimMc: ok let me update build page
14:51:13JimMcAnd after seeing why the build failed previously on Ubuntu I'm guessing it's the same reason it fails on Solaris
14:54:24dysinger enters the room.
14:54:38antaresJimMc: done, updated the Installation page
14:54:44antaresJimMc: thanks
14:55:49JimMcGreat stuff
14:59:03obiejuan enters the room.
14:59:24jlindley leaves the room.
15:01:47wmoxam enters the room.
15:07:46smparke1 leaves the room.
15:08:27madsimian enters the room.
15:10:10agile leaves the room.
15:10:21d2dchat enters the room.
15:11:44AndrewO enters the room.
15:12:14chris2 enters the room.
15:15:05moofbong enters the room.
15:16:17trythil enters the room.
15:23:15wdperson enters the room.
15:24:23anon leaves the room.
15:30:30Maledictus leaves the room.
15:31:00yaroslav leaves the room.
15:33:08Maledictus enters the room.
15:46:59qwert666_ enters the room.
15:47:45skaar enters the room.
15:49:15BlackEdder leaves the room.
15:50:00smparkes enters the room.
15:53:54jlindley enters the room.
15:55:25w1rele55 leaves the room.
16:01:18KirinDav enters the room.
16:02:24Skip enters the room.
16:04:14qwert666 leaves the room.
16:06:09enebo enters the room.
16:06:31benstiglitz enters the room.
16:06:56sudoer_ leaves the room.
16:09:26ttmrichter leaves the room.
16:12:33ariekeren enters the room.
16:19:34GMFlash leaves the room.
16:19:39GMFlash enters the room.
16:25:03mentz_ leaves the room.
16:28:27ariekeren leaves the room.
16:33:12KirinDav leaves the room.
16:49:03agile enters the room.
16:53:13headius enters the room.
17:08:03ruivaldo enters the room.
17:09:09mutle leaves the room.
17:12:48AndrewO_ enters the room.
17:15:44ruivaldo leaves the room.
17:20:09AndrewO leaves the room.
17:20:11dctanner enters the room.
17:20:20smparke2 leaves the room.
17:21:01benburkert enters the room.
17:24:29therealadam leaves the room.
17:25:32BlackEdder enters the room.
17:25:45Fullmoon enters the room.
17:26:05Fullmoon leaves the room.
17:26:25evanheadius: you around?
17:26:53Defilerevan: So.. if I run into a MRI C function that Subtend doesn't implement yet, what do I do about that? Could you outline the general steps?
17:27:04evan1) implement it
17:27:07evan2) rejoice
17:27:09Defilerhaha
17:27:27evanseriously though, it just needs to be implemented
17:27:31divoxx enters the room.
17:27:41DefilerWell, OK.. let me elaborate..
17:27:42evanones related to exceptions will be hard currently
17:28:20DefilerHow do I tell the difference between an MRI function that will interact poorly with our GC system, and one that doesn't have that problem?
17:28:34DefilerFor example, it wasn't/isn't obvious to me why RSTRING is a problem for us
17:28:43evanconsider:
17:28:45headiusevan: 1/2 around...in a meeting, but it's not taking my full concentration
17:28:57evanchar* val = RSTRING(obj)->str;
17:29:02evanrb_funcall(...);
17:29:06evanval[0];
17:29:41evanif val points INTO object, then if rb_funcall causes a GC, obj may (will) move
17:29:42DefilerIf ->str is the actual C string backing our String implementation, that doesn't look problematic to me
17:29:44evanand val will now be invalid.
17:29:49evanit's movement.
17:29:57evanthats the problem.
17:30:06DefilerCouldn't RSTRING's implementation mark the object as something that shouldn't move?
17:30:09evanheadius: i guess there are company schenanigans going on tonight, so no hacking.
17:30:22evanDefiler: sure, then we just need to add non moving semantics to the GC
17:30:30DefilerHow does MRI handle that issue?
17:30:30evangot any idea about the scope of that problem?
17:30:34evan(i didn't think so)
17:30:35DefilerJust by not moving?
17:30:38evanit NEVER moves objects.
17:30:39evanever.
17:30:47evanthus the memory frag problems it has.
17:31:05DefilerDo we move mature objects as well?
17:31:06evanthats also how it deals with people storing classes in global VALUEs (something i hate)
17:31:12evanwe will.
17:31:17gnufiedevan, unrelated, but any ideas what rb_sys_fail does?
17:31:23evanwe don't now, but i don't want to tie subtend to that
17:31:26evanand even so
17:31:38evanhow can you be sure that the object you're pulling the char* out of is mature?
17:31:46evanit could have been passed into you, ie, you can't control it's allocation.
17:32:00evangnufied: yeah, it checks errno, and raises an exception based on the errno value
17:32:09evanwe have a similar mechanism
17:32:25evanlook up code in shotgun for errno_mapping
17:32:33headiusevan: ok...would have been a long trip up from santa clara anyway
17:32:46evanheadius: ok. didn't want ya to jump on the bart if no one was around
17:33:14headiushey, a night in SF with nothing to do isn't so bad either :)
17:33:41evanheh
17:33:43evantrue!
17:33:50evanbetter than in the valley with nothing to do
17:34:27gnufiedevan, and the exception can't be recovered? thanks, I will read up the code.
17:34:28headiushell yeah
17:34:34evanDefiler: to implement RSTRING() sanely, we'll need a shadow structure that contains a copy of the char*
17:34:40headiusthe valley is a wasteland as far as I'm concerned
17:34:56evanDefiler: and the contents of that shadow is copied back and forth from the object, whenever control is past back to rubyland
17:35:08DefilerOK
17:35:13evangnufied: you can rescue the exception
17:35:26evanin MRI, i don't think ANY c code rescues it being thrown though
17:35:27DefilerHow about rb_ensure? Are we close to being able to build that?
17:35:33evanit's sort of like "well fuck, bail."
17:35:35DefilerI'm trying to decide what to do about decimal.c
17:35:42benny leaves the room.
17:36:02gnufiedevan, yeah thats right. its not rescued and it throws something like this:
17:36:07evanDefiler: rb_ensure is a little ways off
17:36:08gnufied/var/lib/gems/1.8/gems/packet-0.1.5/lib/packet/packet_core.rb:127: [BUG] rb_sys_fail() - errno == 0
17:36:17evanthe current code doesn't handle passing exceptions to subtend AT ALL
17:36:30evanoh
17:36:32evanthats something else
17:36:38evanie, you shouldn't call rb_sys_fail() if errno is 0
17:36:43evansince that means there wasn't a sys_fail
17:36:44divoxx leaves the room.
17:37:36obvio171 enters the room.
17:37:48evanDefiler: i think we should tackle BigDecimal in ruby
17:38:53obvio leaves the room.
17:38:55DefilerOK
17:39:00DefilerI will port decimal.c to Ruby, then
17:39:12DefilerIt is a much better starting point than the nightmare of bigdecimal
17:40:17evanyeah
17:40:25evani'd do 2 other things
17:40:27evanreading wise
17:40:32evan1) check out that other decimal library
17:40:41evanthats i guess most of the API, but a lot smaller
17:40:41DefilerThere is a third?
17:40:44evanyes
17:40:46gnufiedevan, so when MRI does call rb_sys_fail on errno 0, its a fatal error and not recoverable. makes sense. I wonder, whats the solution.
17:40:49evancheck out jruby's big decimal
17:40:59evanthe java will likely be easier to follow than crazy C
17:41:01DefilerAah, right. I forgot to check that
17:41:08DefilerThe C is really clean
17:41:10DefilerI had no trouble reading it
17:41:16evanok, just givin' ya options.
17:41:27evangnufied: ah! yes.
17:41:35evananytime you see [bug], thats not an exception
17:41:50evanthats MRI being rude and calling printf(), then exit()
17:45:26tokengeek enters the room.
17:46:39jayWHY enters the room.
17:46:42nicksieger leaves the room.
17:49:12thehcdreamer leaves the room.
17:57:04wycats leaves the room.
17:57:34be9 leaves the room.
18:00:42lopex enters the room.
18:03:06mentz_ enters the room.
18:04:28yaroslav enters the room.
18:11:18TheVoice enters the room.
18:12:20wmoxam leaves the room.
18:16:28jlindley leaves the room.
18:25:49boyscout1 commit by Charles Oliver Nutter
18:25:49boyscout * Quarantine the cvar-related instance_eval spec for now; it's not clean.; 26ba3ad
18:26:40benburkert leaves the room.
18:27:43d2dchat leaves the room.
18:32:12OnO leaves the room.
18:34:30Maledictusheadius: is remove_class_variable broken?
18:34:49macournoyer_ enters the room.
18:36:07Arjen_ leaves the room.
18:39:41rubuildius_ppcCharles Oliver Nutter: 26ba3ad30; 1995 files, 6503 examples, 22643 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181192
18:41:38headiusMaledictus: no, the problem I ran into is getting the removal working on the right target
18:41:44headiusclass vars are weird
18:42:11antares enters the room.
18:42:28jayWHY enters the room.
18:42:47jayWHY enters the room.
18:42:53Maledictusok
18:43:45webmat_ enters the room.
18:44:50nicksieger enters the room.
18:49:09tokengeek leaves the room.
18:49:11cremes__ enters the room.
18:50:29macournoyer leaves the room.
18:55:25d2dchat enters the room.
18:55:43Fullmoon enters the room.
18:55:59dctanner leaves the room.
18:57:33webmat leaves the room.
19:02:08benburkert enters the room.
19:03:12rueHello
19:04:36nicksieger leaves the room.
19:05:25cremes leaves the room.
19:06:15dbussinkrue: howdy
19:06:16jayWHY leaves the room.
19:06:21dbussinkrue: feeling better?
19:07:47jayWHY enters the room.
19:09:12rueNot really, but I just woke up
19:12:30antaresrue: what's up to you man?
19:14:36smparkes leaves the room.
19:17:18quellhorst enters the room.
19:17:28quellhorstcan rubinius be used to run rails now?
19:17:34evanno
19:17:48evanthe goal is to have it running rails by railsconf.
19:19:03tarcierithat's quite the acid test
19:19:34quellhorstok, thats kinda soon ;)
19:21:04DefilerStop reminding me =(
19:21:21headiusDefiler: got it done yet?
19:21:26headiushow bout now?
19:21:48DefilerOoh those meddling kids!
19:22:42dbussinkDefiler: you're so slow
19:22:49dbussinkDefiler: i need rails
19:23:34headiusDefiler: serious question though, are you hitting rails unit tests or what?
19:24:00dbussinkafaik we have eval ordering and bigdecimal as the current showstoppers
19:25:00headiusshowstoppers preventing running the tests even?
19:26:04evanno, the tests have been running
19:26:55headiusok
19:27:10headiusso then it's evan that's slow!
19:27:15headiuscrack that whip!
19:30:00evanflails himself
19:36:47Defilerheadius: eval order prevents us from running the test suite as a whole
19:36:55headiusthat sucks
19:37:00Defilerheadius: since it all depends on activesupport, which doesn't load with right-to-left
19:37:13DefilerI have been running individual tests by hand, though, which is a giant hassle
19:37:13naeu leaves the room.
19:37:35DefilerWe also don't have any working database drivers yet. I am totally stumped on MySQL, and am going to try to get SQLite3 bound up this week
19:37:45Defilerbigdecimal is not a test suite blocker
19:38:07DefilerThough presumably it is a blocker to passing the AR tests related to that type
19:38:33DefilerI don't consider bigdecimal to be a serious problem, in comparison to whatever is making MySQL not work
19:39:10febeling enters the room.
19:39:38smparkes enters the room.
19:40:03eneboDefiler: have you tried pure ruby mysql driver?
19:40:53DefilerYeah, that's the one I can't make work
19:41:02evanDefiler: have you given up on mysql then?
19:41:07evanif so, we need someone else to work on it.
19:41:23DefilerYeah, I don't have the debugging skills to handle it. It looked like NoKarma was volunteering
19:41:35Defilerbut I haven't handed him the ticket yet.. wanted to talk to him again to confirm
19:41:55evanplease make it a priority.
19:42:03DefilerWill do. =(
19:42:10DefilerIt appears to be something deep inside the IO system
19:42:26DefilerI can't find anything wrong with the socket code that gets executed
19:42:27evando you have a write up about whats going on?
19:42:31evanin the ticket perhaps
19:42:42DefilerTicket has some info, but I need to update it. I will do so today
19:42:55DefilerActually, I think I have it on the same ticket as AR, so I will split it off
19:43:04evanok.
19:43:40dbussinkDefiler: if you have the info, i might have some time to spare right now to take a look if you want
19:44:04DefilerSure
19:44:14DefilerAll you have to do is copy mysql.rb into lib/
19:44:28Defilerthen shotgun/rubinius -rmysql -e "Mysql.new"
19:44:45Defilerexits with SIGPIPE when it writes the 'hello' to the UNIX socket mysql is running on
19:45:12boyscout3 commits by Dirkjan Bussink
19:45:13boyscout * Update tags for implemented File.grpowned? specs; f49cf4d
19:45:14boyscout * Spec File::Stat#grpowned? and implement File.grpowned?; ea19fb0
19:45:15boyscout * Properly rename File::Stat#dev_major and File::Stat#dev_minor specs; c411b15
19:45:18evandid you ever try it in TCP mode?
19:45:19DefilerMake sure to build in dev mode, because you will quickly end up in places that are optimized beyond gdb's ability to handle
19:45:33DefilerHrm.. I can't remember if I have. Let me try
19:48:53DefilerOh, tricky. If you pass it localhost it still uses the UNIX socket
19:48:59Defiler127.0.0.1 should work though..
19:49:12dbussinkDefiler: yeah, 127.0.0.1 and ::1 should work
19:51:04jayWHY leaves the room.
19:52:10Defilersame problem in TCP mode
19:52:39jayWHY enters the room.
19:53:07Defilerhttp://rafb.net/p/E2D06W18.html
19:53:14Defilermine is modified, so don't trust the line numbers
19:55:37dbussinkDefiler: looks like the data is bogus
19:55:53DefilerMRI prints the same data string but succeeds
19:56:05nicksieger enters the room.
19:56:05dbussinkDefiler: if i tried to print it out, it breaks on an infinite loop in puts
19:56:07DefilerAlso, they each appear to be making the correct system calls, according to dtrace
19:56:17DefilerYou have to watch out for what 'self' is
19:56:29Defilertry STDOUT.prim_write "blah blah\n"
19:57:30rubuildius_ppcDirkjan Bussink: f49cf4d03; 1995 files, 6509 examples, 22651 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181238
19:57:39dbussinkDefiler: ah yeah ok, sounds obvious
19:58:32bricolage enters the room.
20:00:26headius leaves the room.
20:00:51DefilerAlso, irb can be really confusing, so I recommend not using it or -e
20:01:01DefilerOn the other hand, I failed at finding the problem, so maybe you shouldn't listen to me. :)
20:01:26naeu enters the room.
20:03:23rby enters the room.
20:04:39eventualbuddha enters the room.
20:05:13tokengeek enters the room.
20:06:27benny enters the room.
20:08:01Defilerevan: Is there a cheap way to say 'run until the output of rbt changes' in gdb?
20:08:11evanno
20:08:36rueHaha, the WH staffer actually called it the "popemobile" on tV
20:09:17rueDefiler: You could store it in an $var and comp; but it would seem easier to just conditionalise on a function argument
20:09:58DefilerWhich would be good? cpu_send_message, perhaps?
20:10:07rueE.g. `cond <bp #> (strcmp(arg, "moomin") == 0)`
20:10:19evanDefiler: yeah
20:11:14ruerbs_symbol_to_cstr might work there
20:11:23evanwhy?
20:11:34evanDefiler: what do you want to do?
20:11:37rueFor cpu_send_message
20:13:44d2dchat leaves the room.
20:15:13Defilerevan: Just trying to find a good place to stand to watch the state changes
20:16:03DefilerThere's currently no way to eval arbitrary Ruby code from gdb, right?
20:16:12evanARG! wtf.
20:16:14rueMaybe a watchpoint instead then
20:16:20evanDefiler: no
20:16:31ruep is all-powerful though
20:16:48DefilerI need to 'p' a ruby object
20:17:40rueDefiler: In GDB, you can use `p <any valid C statement>`, so if we had, say, void rbs_eval(char* blah);, that would work
20:17:46ezmobius enters the room.
20:17:52evanbut we don't.
20:17:57rueThere is _inspect
20:18:07evanyes, there is
20:18:12rueBut that one may cause problems if the object is broken
20:18:26evanDefiler: you can poke the object from gdb directly.
20:18:49DefilerHow do I get a handle on it?
20:19:06rueDefiler: Incidentally, have you checked through the ruby-side debugger?
20:19:10evanto what?
20:19:20evanp _inspect(<something that returns object>)
20:19:24Defilerevan: The object bound to the variable in question
20:19:30evanhuh?
20:19:37DefilerYeah, I don't have anything to put in between those < > that returns what I need
20:19:37evanyou're talking in riddles.
20:19:43DefilerAt least, I can't think of anything
20:19:45evanso
20:19:51evanyou don't even know what you're looking for?
20:19:54DefilerI'm looking at some ruby code, running it in gdb
20:19:55rueDefiler: Which function are you in?
20:19:56evanso why do ou want to run some code?
20:20:04rueOr planning to be in?
20:20:04Defiler..and I want the current contents of this variable called 'buf'
20:20:16Defilereval "p buf" would be fine
20:20:18rueWhich is an OBJECT?
20:20:34DefilerYeah, it's a string
20:20:40Defilererr.. array, my bad
20:21:01rueThen `p _inspect(buf)`
20:21:04rueHowever
20:21:15rby leaves the room.
20:21:36rueIf the data is bad, then that may cause a segv; you may want to look at the array.c functions to extract the C data
20:21:43DefilerI don't get a SEGV
20:22:11yaroslav leaves the room.
20:22:12DefilerAm I explaining this poorly? I guess I am.
20:22:23rueWhat do you get back, then?
20:22:32DefilerGet back from what? 'buf' is not in scope in GDB
20:22:44evanis buf a local?
20:22:44dbussinkyou can go up
20:22:48rueAh, you need to get where it is then
20:22:48evanin ruby
20:22:51yaroslav enters the room.
20:22:53Defilerbuf is a Ruby local, yes
20:23:01evanyou need to figure out which number local it is.
20:23:19DefilerI'll just restart the run and yield it to gdb directly
20:23:21evanthen pull it out of the locals tuple
20:23:26bitbang enters the room.
20:23:28bitbang leaves the room.
20:23:30VVSizhi folks, looks like recently added File.grpowned? rubyspec fails on MRI as well (on Linux)
20:23:42VVSizdbussink: ping :)
20:23:53dbussinkVVSiz: ah, that would probably be my bad
20:23:54evanDefiler: you're getting congnitivie dissitence working in gdb with the 2 languages i think
20:23:59dbussinkVVSiz: you have a pastie?
20:23:59yaroslav leaves the room.
20:24:05yaroslav enters the room.
20:24:08VVSizpastie: for dbussink
20:24:14webmatrue: Just dropping in to mention that part 2 is done ;-) http://programblings.com/2008/04/15/rubinius-for-the-layman-part-2-how-rubinius-is-friendly/
20:24:30pastiedbussink: http://pastie.org/181254 by VVSiz.
20:24:38ruewebmat_: Cool!
20:24:59rueAlright, snack break everyone
20:25:10VVSizdbussink: fails with Ruby 1.8.6pl114, MRI latest 1.8 branch, MRI 1.9 and JRuby
20:25:28dbussinkVVSiz: hmm, apparently that's not defined behavior :(
20:25:51wmoxam enters the room.
20:25:59VVSizbut those new File.chmod(nil, ...) calls found a bug in JRuby :)
20:26:45Defilerevan: Well, my issue that I have difficulty using gdb to break at exactly the right point to be able to access the locals of the currently-executing method
20:27:22rueDoes it work on p111?
20:27:26DefilerParticularly since I need to inspect it on, say, line 20-ish of a method
20:27:43rueDefiler: Put a yield_gdb in the method to help get started
20:27:57d2dchat enters the room.
20:28:23evanDefiler: yeah, we all do.
20:28:25dbussinkVVSiz: that's a good side
20:28:25DefilerYeah, I am in there now
20:28:29evanDefiler: you should try using the ruby debugger instead
20:28:36evanif you want to inspect ruby objects.
20:28:50evanesp. since adam has been slaving away
20:28:50evan:)
20:29:02brixenruby debugger is really nice
20:29:09brixenand you should be able to yield_gdb too
20:29:15brixenfrom ruby debugger
20:30:05brixenDefiler: or you could ask giles to write some super tests for you and render all the worlds debuggers obsolete
20:31:03djwhitthehe, is giles the guy that posted about debuggers a while back and got everyone mad?
20:31:03febeling leaves the room.
20:31:06DefilerI couldn't make the ruby debugger work for me in this file
20:31:12brixendjwhitt: yeah
20:31:14DefilerIt was missing lines.. but that was a week or so ago, so it might be fixed now
20:31:37brixendjwhitt: as with all dogma positions, you end up looking silly, imo
20:31:56djwhittbrixen: indeed, the whole thing was pretty entertaining
20:32:12febeling enters the room.
20:32:21brixenI personally thank the universe for agardiner almost daily :)
20:32:26boyscout2 commits by Dirkjan Bussink
20:32:27boyscout * Fix typo in File.grpowned? spec; 30c717e
20:32:28boyscout * Fix File.grpowned? and it's spec; 1bc17a0
20:32:33dbussinkVVSiz: that should fix it
20:33:36VVSizdbussink: excellent, thanks! (it works)
20:36:41stepheneb leaves the room.
20:37:03evanso, i'm thinking about adding SubTasks objects
20:37:39evanthey'd let you (carefully) deepend the C stack and execute ruby code
20:38:15evanthen we could have rbx_eval(...)
20:39:18demisone enters the room.
20:39:34demisonehi there all
20:40:13brixenevan: how do you guarantee "carefully" ?
20:40:16rueHello, demi
20:40:21rueErm, demisone
20:40:29ruebrixen: With a lisp!
20:40:29evanbrixen: well, i'm not sure about it yet.
20:40:44demisonewho's gonna help a newbie make a patch? Actually before that I can't run the specs correctly...
20:40:46evanbut the code path that calls rbx_eval would have to be using objects through handles
20:40:49ruebrixen: Get it? Lisp!
20:40:50evanso that the GC can run
20:40:52demisonerue: i got it anyway :D
20:41:09evanbut it seems like i can make usage via handles much nicer now
20:41:12dbussinkdemisone: what platform are you on?
20:41:12evanit's still an idea
20:41:50rueevan: Are you thinking this outside of the existing nmc framework?
20:41:56demisonedbussink: mac, i have setup rbx ok and actually run some code today (for benchmarking) which led me to tracing 1 or 2 bugs
20:42:18demisonedbussink: i changed the code, added specs but the specs seem to "ignore" the code changes...
20:42:21demisone..!
20:42:27dbussinkdemisone: did you do a rake build?
20:42:39dbussinkdemisone: what part of rubinius are you working on?
20:42:48demisonedbussink: before the changes or after?
20:42:59demisonedbussink: i was on Symbol#to_proc
20:43:05demisonegive me a sec...
20:43:11dbussinkdemisone: also after the changed, if you change anything in kernel/ you need to do a rake build
20:43:12evanrue: yes.
20:43:12brixendemisone: if you change any .rb files in kernel/** you need to run rake to build the libs
20:43:23demisonehttp://rubinius.lighthouseapp.com/projects/5089/tickets/363-yield-block-problem#ticket-363-6
20:43:30demisoneand http://rubinius.lighthouseapp.com/projects/5089/tickets/495-bug-weird-behaviour-from-splat-operato r-when-passed-to-a-method#ticket-495-1
20:43:56demisoneok, i'm gonna run the build
20:43:57evanOOOH
20:44:00evannew LH look!
20:44:17brixenevan: yeah, hurts my eyes trying to find relevant info in a ticket view
20:44:17rubuildius_ppcDirkjan Bussink: 30c717e17; 1995 files, 6508 examples, 22649 expectations, 0 failures, 0 errors; http://pastie.caboo.se/paste/181269
20:44:26dbussinki liked the old look better
20:44:27rueHow.. Amiga
20:44:39brixenyeah, I liked the old look better for the most part
20:44:48brixensome of the bubbles could have gone away
20:45:00rueThis one does use the screen better, granted, but the icons are wasting space
20:45:01brixenbut now there's not enough hints for easy eye-tracking
20:45:25dbussinkstuff doesn't stand out anymore
20:45:36brixendbussink: exactly!
20:45:48brixenI can actually feel my eyes hurting trying to track in all that whitespace
20:46:05dbussinkespecially if you scroll down, everything disappears in a large blob of whiteness
20:46:15demisonebrixen, dbussink : ok. i was missing that part. Now to the specs :)
20:46:19demisonebrb
20:46:42rueOuch, I think JS syntax highlight
20:47:09djwhitthttp://activereload.lighthouseapp.com/projects/44-lighthouse-users/tickets/new
20:47:15djwhittsubmit away :)
20:47:18brixenheh
20:47:20rueI dunno, it has promise
20:47:44brixenI wonder if they'd accept a ticket: Please perform user testing
20:48:05djwhittheh, I was thinking something a little more polite, but...
20:48:34brixenI love the dropdown on the tickets tab
20:48:49evanyou can have custom ticket status's now
20:48:52evannot just the 5 defaults
20:49:36demisoneok, here's another stupid question: what are these rbc files that get created?
20:49:39therealadam enters the room.
20:50:16dbussinkdemisone: ruby code compiled into rubinius byte code
20:51:00demisoneis there any reason to leave them there after running the code?
20:51:04dbussinkdemisone: basically a binary representation of what you see when you run ./shotgun/describe file_with_ruby_code.rb
20:51:13stepheneb enters the room.
20:51:13dbussinkdemisone: yeah, so code doesn't need to be compiled every time
20:51:15demisone(for the next time that they're going to be run for example)
20:51:19demisoneoh, ok
20:51:27demisonei'll keep that in mind :)
20:51:32dbussinkit only does a recompile when a file is changed
20:51:44dbussinkbut for kernel/ code, everything needs to be compiled first
20:52:05dbussinkalso because there are some safeguards needed there to prevent huge problems
20:52:59Skip leaves the room.
20:52:59dysinger leaves the room.
20:52:59dewd leaves the room.
20:52:59dgtized leaves the room.
20:52:59oweff leaves the room.
20:52:59demisonenice, and now that i'm finished with the specs & the code i'm gonna read the git manual to make the patch :D
20:52:59dbussinkdemisone: brixen has a nice read on that last problem: http://blog.brightredglow.com/2008/1/17/evil-can-be-dangerous
20:54:03demisonedbussink: wow, that's a big post... i guess i'll take a look later
20:54:38dgtized enters the room.
20:54:43ruedemisone: Generating the patch is really simple--but that said, please do read the manual! It will certainly help in the future too :)
20:54:44demisone(no it's not that big after all - all those comments make the scrollbar look really scary :D)
20:54:55oweff enters the room.
20:55:41demisonerue: i've already read it once but i'm still "stuck" with svn so it's kinda hard to move to git (without messing everything up)
20:55:42ruewebmat: Good post!
20:55:59evanwebmat: yes, great post!
20:56:00webmatrue: thanks :-)
20:57:17ruedemisone: It takes a little getting used to. I have used darcs since way back so the distributed side was easy for me, but that still left the git object model, refs and so on
20:57:34webmatHaven't had the opportunity to contribute to Rubinius yet, so this is my contribution ;-) Keep up the good work everyone ;-)
20:58:22ruedemisone: Doing it in those two parts is fine, though. First get into the distributed model even if using rota commands and then pick up the repo model, refs and so on (that is where the /real/ power is)
20:58:27nicksieger leaves the room.
20:58:42octopod leaves the room.
20:58:47rueGit may supplant ninjas as the real ultimate power
20:59:01nicksieger enters the room.
20:59:06DefilerOh. Huh. It looks like I've managed to localize this problem (in MySQL pure driver) a little more precisely than before
20:59:09brainopia enters the room.
20:59:12rueHurray!
20:59:15lazybunz enters the room.
20:59:17Defiler@sock.read(4) is returning nil
20:59:20rueOK, doc time. Be back in a bit
20:59:30dysinger enters the room.
21:02:13Skip enters the room.
21:07:30dewd enters the room.
21:12:20Defilerevan: Can I run an IO scenario past you, and you can tell me whether it sounds familiar?
21:13:14evanok
21:14:03DefilerSo, MySQL driver opens a TCP socket to the server
21:14:05rby enters the room.
21:14:32evanyep
21:14:39DefilerWrites a 'hello' packet to it, and then reads some data back (which happens to contain the server version, etc)
21:15:27evanok
21:15:44DefilerThen it writes whatever is necessary to actually finish logging in, and reads back some junk from the server to see what happened
21:16:25Defilerwrite #1, read #1, and write #2 contain exactly the same data in MRI and in Rubinius (not counting the part of the response that contains a timestamp/other ephemeral crap)
21:16:34DefilerIn rbx, read #2 returns nil
21:16:55rby leaves the room.
21:17:19lazybunz leaves the room.
21:17:37evanso
21:17:54evanyou should do up that EXACT scenario in a .rb file
21:17:57evannot using the Mysql driver.
21:18:12dlee enters the room.
21:18:14evanjust using a raw socket.
21:18:20evanand have rbx send the exact same data as MRI
21:18:23evanand see what happens.
21:18:29Defilere.g. http://rafb.net/p/RKMcp546.html
21:18:33evanso you can figure out if the remote side doesn't like the data
21:18:36evanor if it doesn't get it
21:18:42evanor if rbx gets confused on the read
21:18:58evanbut do it directly with the Socket api
21:19:02evandon't use the mysql driver
21:19:05evanwe MUST isolate things.
21:19:49DefilerOK
21:20:02djwhittDefiler: you tried looking at that with Wireshark?
21:20:12djwhittthat might be helpful too
21:20:23evanthats why i suggested he try TCP
21:20:33evanyou can tcpdump, to be sure rbx is sending the correct payload
21:20:35yaroslav leaves the room