Index

Show enters and exits. Hide enters and exits.

08:40:12dbussinkmorning ppl
08:42:50dwaitemorning!
08:54:05dwaitegoes to bed; its 1:53 in the morning here
09:05:26dbussinkdwaite: hehe, also morning then :)
11:17:53rueMorning
11:18:16dbussinkrue: afternoon :)
17:14:33dwaitegood morning
17:18:15rue*wave
17:22:03evanmorning.
17:22:15evanit's raining here.
17:22:38brixenhmm, freezing here :)
17:23:04brixenaround 22 deg, no precip thankfully
17:24:14evanit's a drizzle really
17:24:49evanput it does call for today to be a Neko Case / Rilo Kiley music day
17:25:06brixenheh
17:30:22dwaite8 here brix, but not currently snowing
17:31:10dwaiteI hope the temp gets above freezing at some point this week :)
18:11:12dbussinkevan: http://redmine.ruby-lang.org/issues/show/2454
18:27:20dbussinkevan: good chance to swoop in some cleanups ;)
18:27:27evanyep
18:28:23dbussinkevan: what's the main issue you are seeing?
18:28:31evanin?
18:28:42dbussinkevan: in your getting openssl to run work
18:28:50dbussinkevan: any specifics, or a lot of small things?
18:29:01evansome small things
18:29:09evanand removing all uses of GetOpenFile
18:29:11evanwhich was easy
18:29:20evanthere were only a few places.
18:35:04dbussinkevan: ah ok, i see it uses RFILE
18:36:18dbussinkevan: btw, i also fixed generating backtraces on os x on a segfault :)
18:36:27evanfixed?
18:36:35evani wasn't aware it was broken.
18:37:14dbussinkevan: you didn't get the backtrace on os x, just on linux
18:37:19evanoh
18:37:20dbussinkevan: when not using gdb
18:37:21evandon't commit that.
18:37:38dbussinkevan: oh, what's the issue with that then?
18:37:41evanunless you also check that crashreporter is enabled
18:37:51dbussinkevan: this is the change: http://github.com/evanphx/rubinius/commit/8a21d5032b2dbdd83f621bfeb85eba30367457ec
18:37:52evani didn't do that because if you catch SIGSEGV or SIGBUS
18:37:58evanthen crashreporter doesn't fire
18:37:59evanok
18:38:02evangoing to have to remove it
18:38:07evanor make it conditoinal in some way
18:38:22dbussinkevan: ah ok, when does crashreporter fire then? since i've never seen that launch actually
18:38:35evango into crashreporterpref
18:38:41evanand you can enable developer mode
18:38:51evanso it fires when a command line program crashes
18:38:54evanwhich is what I do.
18:40:01dbussinkevan: ah ok, you installed a preference pane for that?
18:40:09evanno
18:40:10evanit's already there
18:40:14evanit's not a pref pain
18:40:15evanpane
18:40:19evanit's a standalone program
18:42:07dbussinkevan: ah ok, found it
18:42:35dbussinkevan: isn't dumping it to the console easier for people, as in, that works straight away without having to change that setting?
18:42:44evanimho no.
18:42:58evanthe details crashreporter reports is much better than we can generate with backtrace()
18:43:17rueOn SL only?
18:43:24evanperhaps.
18:43:26evani don't recall.
18:43:35rueNo program by that name on Leopard, at any rate.
18:43:52dbussinkevan: well, i didn't know of the option at all, is it documented somewhere (also in the rubinius code? )
18:43:58evanbrixen has it enabled on Leopard.
18:44:07evanwhich option?
18:44:10evanusing crashreporter?
18:44:14dbussinksince pointing people at would be very critical in order for people to be able to properly report it
18:44:14dbussinkyeah
18:44:21evannot sure
18:44:24evani don't think we documented it.
18:44:42dbussinkevan: well, that's probably the reason i thought, hey, this isn't working, let's fix this
18:45:01evanprobably not, unless the documentation was right above the code you changed :)
18:45:35evansince that code didn't indicate there was anything special about OS X
18:45:41evanso you wouldn't have known to go look for it.
18:49:01dbussinkevan: could also write a custom crash handler that automatically posts an issue ;)
18:49:10evanconsidered that.
18:49:19evanthere is a google project to build something that odes that
18:49:24evanbut the code is super complicated
18:49:29evani couldn't figure out how to wire it up right.
18:49:35rue/Developer/Applications/Utilities/CrashReporterPrefs.app here
18:49:57rueSo, yeah, this is unlikely to be something that most people have enabled unless we tell them to
18:50:16dbussinkevan: well, could also write the most basic c code possible to do that, so it works on all platforms
18:50:33evanyeah
18:50:45evancode to take the output from backtrace() and post it is fine
18:51:00evanthe issue is that it's hard to do much work in a SIGSEGV handler
18:51:44dbussinkevan: yeah
18:51:59dbussinkevan: btw, if you want a fresh segfault to start the week, i have one here: http://github.com/evanphx/rubinius/issues/#issue/115 ;)
18:52:08evank
18:52:21evani'll take a look once this stupid sexual harrasement thing is doen.
18:52:23evandone.
18:52:41dbussinkevan: which harrasement thing ?
18:52:55evanthis thing for work
18:54:00dbussinkevan: like promising you never going to do it?
18:54:09evanpretty much
18:54:13evanit's an education thing
18:54:23evanwhat is and is not workplace harassement
18:54:33evannot just sexual
18:56:13dbussinkevan: ah ok, i should really show this to a colleague of mine :P
18:56:31evan:(
18:56:58dbussinkevan: hehe, meant it in a fun way, he's also a really good friend of mine, so we just joke around a lot
18:57:07dbussinkand he's gay, that might have something to do with it too :P
18:57:09evangotcha.
18:58:27dbussinkevan: but then again, we also sometimes just start singing or dancing, which might count as harassement actually...
18:58:48evanprobably not
18:58:56Zoxcmost things can count as harassement
18:58:58evanthough, if someone came to work dressed as black pete in the US
18:59:05evanthat would be racial harassement probably.
18:59:28dbussinkevan: haha
18:59:53dbussinkevan: here companies usually organize something for the kids of employees with sinterklaas and some petes :P
19:00:08evanyep
19:00:40dbussinkbut that was last weekend, so the christmas madness has started now
19:03:04evanhehe
19:03:06evanhere too.
19:22:41agardinerevening!
19:23:03dbussinkagardiner: evening :)
19:23:31agardinerhaha! One of the few for him it is evening! :-D
19:23:55brixenagardiner: another 2 hrs of sunlight here and it will be like evening :)
19:24:05dbussinkagardiner: finally glad to see someone in the same tz :P
19:24:09brixenhas little love for winter
19:24:12dbussinkagardiner: or almost the same i think
19:24:19agardinerhehe
19:24:20dbussinkbrixen: how cold is it over there?
19:24:22agardinerGMT here
19:24:38agardinernot too cold, probably in the 50s is my guess
19:24:54agardinerbut the temp drops rapidly when the sun goes
19:24:55brixendbussink: oh, only about -5 C
19:25:03dbussinkagardiner: what's that in normal people temperature? ;)
19:25:10dbussinkbrixen: ah, refreshing :P
19:25:11agardinerlow teens
19:25:12brixendbussink: actually, probably abou -3 C now
19:25:17agardiner10-12 say
19:26:01dbussinkstill above 0 here at night now, so not that cold yet
19:26:17dbussinki love my new apartment, haven't turned on the heat at all :)
19:26:40agardineryeah, we get the same here - everyone below is heating our apartment for us! :-)
19:26:57agardineronly need the heat for an hour or two in the morning mostly
19:27:19agardinerjust as well, since our electricity bill is out of this world!
19:27:25dbussinkagardiner: we have people left right, top and bottom
19:27:35agardinerwe don't have anything except electric
19:27:38dbussinkagardiner: mostly old people, they usually warm it up a lot
19:27:49agardinerso hot water, heating all adds up
19:28:09agardinerhehe, old folks don't like the cold
19:28:14dbussinkagardiner: ah, we still have gas too, a lot cheaper for heating
19:28:23dbussinkand i prefer it for cooking too :)
19:28:29agardineryeah, we'd have that if we had the choice
19:28:42agardinerseems crazy - this place is only 10 yrs old
19:28:46agardinerwhat were they thinking?
19:28:57dbussinkwell, they also don't put it in a lot of new places here
19:29:11dbussinkthey have central heating systems and then just electricity in the houses
19:30:33dbussinkagardiner: you're in london?
19:30:40agardineryep
19:32:43dbussinkagardiner: ah, cool, nice city :)
19:32:58agardineryeah, its not bad
19:33:13agardinerlooking forward to getting back to Oz for Xmas though
19:33:25agardinerwarm weather, sun, bbq
19:33:28agardinerbring it on
19:35:37dbussinkagardiner: i think i would find that really weird :)
19:35:50dbussinkagardiner: christmas == cold and long nights for me :)
19:36:09agardineryeah, its not the traditional white xmas, but its what i grew up with!
19:36:35agardinerand it beats a wet and cold xmas in London!
19:37:26dbussinkagardiner: i prefer really cold & white christmas over the usually rainy / grey christmas :)
19:38:24agardineryeah, a white xmas is a lot better than grey! But with London, its normally grey...
19:40:51dbussinkagardiner: yeah, sadly that's usually the case here too
19:41:15agardinerdbussink: "here" is belgium?
19:41:41dbussinkagardiner: netherlands
19:42:04agardinerAh, close then!
19:44:36dbussinkagardiner: hehe, yeah
19:44:51dbussinkagardiner: my hostname has .nl in it :P
19:45:30agardinerah, yes, but i didn't think to check that...
20:15:19ruedbussink: Heey, I am equally close, just more futuristic...
20:20:45dbussinkrue: but your biorythm is weird ;)
20:20:51evanman, our String#split is sloooow.
20:21:53rueBiowhat?
20:21:59rueOh, oh, yes
20:22:25rueI have a b-i-orhythm just like all organic bipedals
20:22:39ruePerfectly ordinary
20:28:38evanFAIL
20:28:54evanwasted my whole morning on this stupid workplace harassement webinar thing
20:29:00evanand then it didn't register that I even did any of it
20:29:10evani'm not doing it again.
20:29:12agardinerdisaster!
20:30:04Defilerevan: You forgot to install the special harassment plugin first
20:30:23Defilera technician will be along soon to prep you for the surgery
20:30:29evanbecause requiring me to install it constitutes OS harassement on their part
20:30:59agardineri see harassment coming as a result of this fiascoe!
21:55:04dbussinkbrixen: small thing, but the rubinius website doesn't specify any encoding, so it fallbacks to people's default
21:56:16brixendbussink: website is being updated soon
21:58:32rueMm, someone had a ticket about a typo
22:22:50dwaiteI was very disappointed by the sexual harassment training at work
22:23:05dwaiteI don't feel like it taught me how to do it right at all
22:23:24evanhah
22:23:37dwaiteI figured it would be like, lesson 1: self confidence
22:23:41dwaitelesson 2: objectifying women
22:24:22dwaiteinstead, I swear they spent the whole time trying to make me reevaluate whether I wanted to commit sexual harassment at all
22:24:58DefilerIt's easy once you get started though, don't worry
22:25:08dwaiteI took a two step process for my employee training (which happened after I had worked here four years)
22:25:23dwaite1. fill out the test, answering 'a' for every question
22:25:51dwaite2. save their corrections, and submit the test again answering the right answer for every question
22:26:29dwaiteI apparently did significantly better the second time around
22:26:59Defilerdiff is so handy
22:27:58dwaiteapparently you are allowed to discriminate people based on pizza topping preference
22:32:08evanthats correct
22:32:14evanto anchovey people on my teams.
22:39:01evanwhy does String#split convert the arg into a regexp..
22:39:09evanthere is a better way to do this.
22:43:44agardinerevan: i started looking at the debugger again over the weekend. Have you got some time to discuss?
22:44:31evansure
22:44:50agardinernot sure where to start...
22:45:07agardinerits a long way from working as things stand
22:45:18evanyeah, I suspected as much.
22:45:23agardinerhehe
22:46:14agardinerwith shotgun, i had stepping working over branches, into method calls, and back to the caller
22:46:23agardinernone of that works at the moment
22:46:40evanok
22:46:53agardinerand i'm wondering if the plans i had are the best approach
22:46:56evani'd prefer we get step instruction working
22:47:04agardinerthat's working
22:47:25agardineri got that sorted again, except if the instruction is any kind of control flow change
22:47:29evanok, next-ing into a method was pretty hairy before
22:47:36evanso i wanna get it righter this time
22:47:48agardineryeah, that's what i wanted to discuss
22:47:57agardinerthe approach for each problem
22:48:33agardinermaybe we should go over some old ground first though - i'm not sure how well you remember some of the issues
22:48:37agardiner?
22:48:54evana little bit
22:48:58evanfeel free to refresh me
22:49:11agardinerok - might help my thought processes too! :-)
22:49:31agardinerso, initially we built the debugger on the basis of opcode replacement
22:49:39agardinerbut the issues with that were:
22:50:18agardiner1) easy to install a breakpoint, but hard to step due to the need to revert the breakpoint.
22:50:39agardiner2) handling multiple threads is tricky
22:51:15evanyeah
22:51:19evanopcode replacement is cute
22:51:20agardiner3) opcode replacement only works when you know where control flow is going to go next if you are stepping
22:51:23evanbut hard to get right.
22:51:41evanyep yep
22:52:11agardinerso, next up i started work on using unused bits in the opcode as debug flags
22:52:49agardinerthis had the advantage of not having to replace instructions, which made it more robust for a number of cases
22:53:06Defilerold-school way is to emit control flow hints along with the rest of the opcodes
22:53:07agardinerbut you still have to address the flow control challenge
22:53:41agardineri think there are four or five control flow types:
22:53:54agardiner1) simple branches in the same method (goto etc)
22:53:59agardiner2) method send
22:54:02agardiner3) return
22:54:04agardiner4) yield
22:54:09agardiner5) exceptions
22:54:49evanyep
22:54:49evanok
22:54:58evanso we've tried to make it very streamline
22:55:07evanwhat if we turn away from that for a second.
22:55:18evanwe've got the debugging interpreter
22:55:25evanso what if we wire it up so that on every instruction
22:55:45evancontrol is handed to a debugging thread
22:55:50evanand it can decide what to do
22:55:51evanfor each ip
22:55:56evanthats obviously not very performant
22:56:09agardinerit doesn't need to be
22:56:15evanbut it vastly simplifies the control flow picture
22:56:22evanand for things like method calls
22:56:23agardineryou only have breakpoints on one or a handful of methods at any time
22:56:32evanwe can wire it up so that the debugger is called after the lookup
22:56:34Zoxcisn't yield just a call?
22:56:37evanbut before the dispatch
22:56:54agardineryeah, that's what i was planning to do
22:56:57evanthat would allow you to next into a method
22:57:02agardinerbut it strikes me as a bit messy
22:57:13evanwell, i'm open to other ideas
22:57:21evanother things we've tried have been equally messy
22:57:25agardinerwe need special handling in the send machinery and the exception machinery
22:57:32evanwe could write a dispatcher entirely in ruby
22:57:45evanand execute a debugged method entirely in a meta-circular interpreter
22:57:50agardineri had a way out there thought earlier tonight
22:58:14agardinerwould it be possible to have a special jit for debugging?
22:58:49evanif we wanna build one sure
22:58:51evanwhat would it do?
22:59:15agardinerwell, i figured you'd know!? :-)
22:59:37agardinerit seemed to me (without knowing *anything* about the jit)
22:59:43Defilerit would emit a version of the method with a bunch of calls out to the debugger? dunno heh
23:00:01agardinerthat the problem with bytecode replacement is that our bytecodes do so much
23:00:07DefilerI wonder if llvm could be taught to gdb-itize some code
23:00:32agardinerbut if you are jitting down to machine code by visiting these opcodes, it might be easier to add callbacks at certain points
23:00:39Defilerprobably already does that
23:01:08Defilerit would be nice to be able to do both
23:01:14evanagardiner: ok.. but whats the point?
23:01:16evanwhy bother?
23:01:16agardinerboth?
23:01:18Defilerto step through high-level 'ruby' instructions
23:01:27evanhow is that less complicated than a debugging interpreter?
23:01:27Defilerand then down into the code the JIT emitted
23:01:41agardineri'm not sure it is...
23:01:46agardineri don't know enough
23:01:55evanit likely is not.
23:02:12agardinerbut it seemed it might be more self-contained
23:03:03agardinerat the moment, we have another interpreter for the debugger, but it cant handle any of the control flow changes
23:03:19agardinerso we'd need to mess with a number of different areas
23:03:35evanthere is nothing self contained about a magical jit'd function
23:03:36agardinerin a way that didn't cause performance to suffer when not debugging
23:03:42evanthat requires the debugger to work
23:03:50evanthe jit doesn't magically solve problems
23:04:20evani can't see any reason to try and do this with the JIT
23:04:25evanit's lots more complicated
23:04:31evanwith almost no benefit.
23:06:03agardineri won't argue with you - like i said, it was an idea i wanted to float without knowing much about what was involved
23:06:35evanok
23:06:43evani just can't see how it makes this easier
23:06:50agardinerso then...
23:07:02agardinerback to the oringal plan?
23:07:11agardinerwell, previous plan
23:07:12evani don't know which was the original.
23:07:16agardiner:-P
23:07:40agardinerif we stick with using bits in the opcode rather than replacing the opcode
23:07:55agardineri still need ways to handle all the control flow changes
23:08:01agardinerbranches should be easy
23:08:12evanno
23:08:26evani don't think we should replace the bits.
23:08:31agardinerok
23:08:39evanthat has exactly the same problem as opcode replacement.
23:08:52evanwrt reading, setting the bits
23:08:59agardineri think its somewhat simpler, but the problems are the same, agreed
23:09:28evanany idea I had awhile ago is this
23:09:40evanwhen you enable debugging for a method
23:09:58evanyou pass in a mask
23:10:06evanthe mask is an array of Fixnums
23:10:19evanwhere the position in the mask indicates some action on the ip at that number
23:10:24evanso if you wanna break on ip = 3
23:10:26evanyou'd pass in
23:10:32evan[0, 0, 0, 1, ... ]
23:10:50evanthe debugging interpreter will check the mask before each instruction
23:10:53evanto figure out what to do
23:11:00agardinerok...
23:11:35agardinerlike the bit setting in the opcode, but off to the side
23:11:44agardinerinstead
23:11:45evanright
23:12:08evanthat solves the issue of changing any instructions
23:12:22agardineryep
23:13:00evanso, another issue
23:13:10evanperhaps when you setup a method to be debugged
23:13:18evanyou have to pass in a Thread object
23:13:30evanwhich will indicate which Thread the method will be debugged for
23:13:36agardinerah, well
23:13:39evanthat would mean that only one thread would be debugged at a time
23:13:46evanbut it would solve the Threading issue
23:13:54agardineryes if you are stepping, not if you are creating a global breakpoint
23:14:07evanhm. ok.
23:14:12evana good point.
23:14:12agardineri agree, only one thread at a time can be debugged
23:14:26agardinerbut you can't necessarily know which one will hit first
23:14:44agardinerso you set a global breakpoint
23:15:04agardinerwhen hit, you step with a thread specific breakpoints
23:15:08evanwe could simply enforce that
23:15:17evanthat only one Thread can be debugged at a time
23:15:32evanthe debugging interpreter can simple check if the current thread is the one being debugged
23:15:34agardinerabsolutely - just don't force us to know which one ahead of time!
23:15:37evanif not, it will ignore the mask
23:15:42agardineryeah, exactly
23:15:53evanso when a breakpoint is tripped
23:15:56agardinerthat was the plan i had for bit setting in the opcode
23:16:02evanthe current thread is set as the debugged thread
23:16:15evanand now everything except for events on that thread are ignored.
23:16:17agardinerthis is the big advantage either approach has over opcode replacement
23:16:53agardineri definitely like this better than bit setting though
23:16:58evanRAWR.
23:17:28evanString#split from 2.8s to 0.31s
23:17:34agardinerwoot!
23:17:47evanby NOT converting a string pattern to a regex
23:17:56agardinerOoM improvement
23:17:58evaninstead using a simple C style index from the left mechanism
23:19:29agardinerso, the opcode mask approach still needs to deal with control flow changes...
23:19:47evanyes
23:19:58agardinersimplest case first
23:20:04agardinerbranches in the same method
23:20:21agardinerwhen i'm stepping, and the next instruction is a goto_if_tre/false
23:20:46evanyou mean when you're steping at the current one is a goto_if
23:20:55agardineryea
23:20:58evanie, where are you going to go next
23:21:15agardinercan probably solve that with a break after, rather than break before
23:21:16evanwell
23:21:25agardinerso do the branch and then break
23:21:31agardinerto the debugger
23:21:41evanone easily solution is to simply pretend that there is always a temporary break on a goto target
23:21:56evanso we can change goto_if in the debugging interpreter to do the test
23:22:04evanchange the ip
23:22:08evanthen always call out to the debugger
23:22:22agardineryeah, thats what i meant by break after
23:22:39evanok
23:22:40agardinernormally we set the break flag on the instruction we want to break before
23:22:50evanso we'll have the debugger return a command
23:22:50agardinerhere we'd set it on the instruciotn we want to break after
23:22:53evanthat can manipulate the mask
23:23:01evanin this case, the command would just be "break after"
23:23:20agardineryeah, sounds good
23:23:46agardinerthat solves the problem of looking at the stack from the debugger to know where to set the next breakpoint
23:23:57evanyep
23:24:00agardinerwhich seems ugly
23:24:20agardinerand handles the whole class of gotos in the same simple way
23:24:28evanright
23:24:31evanso, here's one
23:24:35evananother one
23:24:48evanwe're on a send
23:24:50evanand we do next
23:24:56evanie, don't break into the destination method
23:25:06agardinerok
23:25:14evanand an exception is raised
23:25:18agardinerooh
23:25:27evanbecause thats basically a goto.
23:25:28agardinerer, ew!
23:25:52evanwe can easily have the debugger file automatically when an exception enters the stop
23:25:56evans/stop/scope/
23:25:59evans/file/fire/
23:25:59agardinerexceptions i figure are the hardest case, and you want to jump right into it! :-)
23:26:03evanstupid hands.
23:26:18evanwell, setup_unwind takes an ip
23:26:27evanwhich is basically a branch target
23:26:38evanseems like if an exception is beind unwound through a debugged method
23:26:43evanthe debugger should always be told
23:26:47evanthat makes it pretty simple
23:26:51agardineri'd go further i think
23:26:55evanbecause the debugger can just be told all the info
23:27:03evanthe exception object, the list of handler ips, etc.
23:27:06agardineri'd like the debugger to fire at the point the exception is about to be raised
23:27:13agardinernot after it starts unwinding
23:27:21evansure
23:27:22evanthats easy.
23:27:34agardinerthen you can inspect state
23:27:40agardineretc
23:27:42evanbut that likely won't be in a method thats currently being debugged
23:27:47evanso lets save that as a different case
23:27:57evani'm looking mainly at the control flow of an existing debugged method
23:28:05agardineryeah, there are multiple scenarios for exceptions
23:28:26evanso if the debugger is fired when an exception enters a debugged method
23:28:30agardinerhey, you brought iit up! :)
23:28:32evanthe debugger can issue "break after"
23:28:46evanto have it break on the handler
23:29:00evanI did, I brought it up.
23:29:06evanthis way
23:29:13evanwhen I type "next" on a send
23:29:28evani'll jump straight to the exception handler code
23:29:29agardinerah, i get you
23:29:38agardineri hadn't even considered the case your describing
23:29:46evanah!
23:29:48evanthis is the case I care about
23:29:54evanbecause it's the case of debugging a singular method
23:29:55agardiner:-D
23:29:59evanand tried to figure out what it does
23:30:09evanso you need to follow the control flow precisely
23:30:33agardinerthat's the challenge
23:30:45agardinerknowing all the places where control flow changes
23:30:51agardinersome are expected, others not
23:31:16agardineri'll bet there are many cases i haven't considered
23:31:17evanthats why having the event tell the debugger
23:31:26evanwithout having to have the debugger know ahead of time
23:31:28evanis easier.
23:31:36agardinerit *has* to be that way
23:31:42evanright
23:31:52agardinerit simply isn't possible for the debugger to know what will happen in called methods etc
23:32:04evanright
23:32:41agardinerso going back to you next->exc case
23:32:54evanyep
23:33:14agardinerif you were hitting next, what should happen?
23:33:36evanwhat instruction am I on?
23:33:38evana send?
23:33:44evanthat raises an exception
23:33:45evan?
23:33:46agardineryeah
23:33:52evanwhen I hit next
23:34:01evani'm told that an exception was raised
23:34:06evanand i'm put at the top of the handler code
23:34:16agardinerseems to me there is an argument for invoking the debugger at both the point of the exception and at the point of return
23:34:46evani think you're getting way ahead of yourself.
23:34:55agardinerprobably!
23:35:02evani'm not saying this is the only place an exception is handled
23:35:10evani'm ONLY specifying the behavior of this one case
23:35:14agardinerno, i know
23:35:14evanwe can deal with other things later.
23:36:02agardinerbut i guess what i'm asking is: how is hitting an excpetion when you hit next on a send different from when you hit an exception elsewhere?
23:36:32agardinerwouldn't you want the option in all cases of either breaking at the point of the excpetion, or breaking at the excpetion handler?
23:40:25evanyou mean
23:40:29evanwhy a send specificly?
23:40:54agardinerwell, i guess i'm thinking more about it from a ui point of view
23:41:07evani think thats getting ahead of the issue
23:41:10agardinerall i hit was 'n' for next - i didn't know an exception would be raised
23:41:23evanbut it did get raised
23:41:27evanso you better know
23:41:54agardinerwell, sure, i want to know when the exception occurred
23:42:16evanyou're hung up on this "when the exception occured" case
23:42:19evani'm ignoring that entirely
23:42:28evanget myopic
23:42:33evanyou're in a single method
23:42:41evanand because of something you're not aware of
23:42:47evanan exception is being delivered to this method
23:42:49evanwhat do you do?
23:43:06evani say you tell the user and show them that they're now in the exception handler code
23:43:10evani can't think of any way else it should work.
23:43:14agardinerwell, i'd say if i was debugging the method, that shouldn't happen
23:43:34agardineri'd want to know: you stepped over a method, but that method has raised this exception here
23:43:40agardinerin this method
23:43:46evanhuh?!
23:43:59agardinerdo you want to a) look at the exception at the point it occurred
23:44:04evanyou're confusing the fuck out of me.
23:44:13agardineror b) return to your method and see how it is handled
23:44:27agardinerlet me put it another way
23:44:34evanwait wait wait
23:44:37agardineri don't want to frustrate you
23:44:39evanwhat is "next" for you?
23:44:48evanwhat does that do in your mind.
23:44:59agardinernext means step to the next instruction/line after the current one
23:45:06agardinerin the same method
23:45:12evandon't follow a method out
23:45:14evanright?
23:45:15agardineryes
23:45:17evanok
23:45:22agardinerbut...
23:45:22evani don't get your point at all then.
23:45:39agardinerif an exception occurred in method i didn's step into
23:45:50agardineri'd want the option to look at it
23:45:55evanok fine
23:46:06agardineri may choose to step right back out
23:46:08evani don't see how thats related at all to what happens in the method you were in when you hit next
23:46:14agardinerbut if i don't look at it, i can't go back
23:46:28evanwhat is "step right back out"?
23:46:39evanyou mean mean see how the exception was raised?
23:46:40agardineri'm in method A and i hit next
23:46:43agardinerA calls B
23:46:50agardinerB raises an exception
23:47:03agardinerI want to know an exception has occurred in called method B
23:47:07evanfine
23:47:14agardinerand be asked do i want to debug there, or return to A?
23:47:19evanthats unrelated entirely to what happens when the exception hits A!
23:47:36evanyou're talking about 2 completely seperate features
23:47:54evan1) auto-break when an exception is raised
23:48:07evan2) moving to exception handler code when an exception enters a debugged method
23:48:13evan2 completely different things
23:48:14evancompletely.
23:48:17agardineryeah, ok
23:48:55agardineryou threw me because it sounded to me like we would ignore exceptions at the point of raise if the user hit next
23:49:01evanle sigh.
23:49:02evanno no no
23:49:02agardinerbut i get what you mean now
23:49:15evani'm not dictating that anything exists
23:49:18agardinerIRC is not the best medium sometimes
23:49:28evanexcept for going over the specific set of actions i'm discussing
23:49:34evanIRC blows actually.
23:49:35evanit's terrible.
23:49:47agardiner:-)
23:49:53evani get more frusterated by text chat of all kinds
23:50:00evanthan any other way of communicating
23:50:06evanmorse code would probably be a little worse
23:50:07agardineroh yeah, definitely
23:50:07evanbut not much.
23:50:17agardineractually, i think it may be better
23:51:19agardinerso, back to your case
23:51:35agardinerassuming the exception gets delivered back to the method you were in
23:51:47evanon the phone
23:51:48evanbbiab.
23:51:55agardiner'k
23:52:18dwaiteyou got preempted by a more interactive medium, agardiner
23:52:28agardiner:-D
23:52:57agardineri was probably due some pre-emption
23:53:25dwaitebtw, back when we were making Jabber, people would keep telling us that we were going out of our way to make this useless XML thing, and that we should not need to do protocol work since IRC already existed as a RFC. "Those that refuse to learn from IRC are doomed to repeat it"
23:53:54agardinerhehe
23:54:02dwaitemy response was that we used what IRC did as a factor in every choice we made. Whatever IRC did, we would do the opposite
23:54:11agardinerha!
23:54:54dwaitehey, should we make everyone known by their computer's IP address? hmm, what did IRC do?
23:55:43dwaiteshould we make it so that a user getting too much traffic should bump them off the server? How about, should we make it so that nicknames and channels are first-come, first-serve?
23:56:22dwaite(yeah, I was a bit of a punk, there were a lot of people who left the channel really disliking me)
23:56:50agardinertoo wedded to the old ways...
23:56:54dwaiteI also wrote a script that let me select part of someone's question and turn it into a google.com "I'm Feeling Lucky" link
23:57:11rueDefiler: GDB 7 has support for JITted code
23:57:13dwaiteI had to stop that because those links started finding their way into official documentation
23:58:02agardineryeah, i'm feeling lucky can be a crapshoot
23:58:26dwaitewell no, I did it as a kinda passive-aggressive joke
23:58:29dwaitelike, let me google that for you
23:58:41dwaiteI didn't intend them to link to say other projects' homepages :)
23:59:01agardiner:-)