Show enters and exits. Hide enters and exits.
| 03:25:48 | evan | libc_: don't bother with the jit/* code. |
| 03:25:50 | evan | it's going away. |
| 03:27:02 | evan | libc_: i'll be back later |
| 03:27:10 | evan | i don't know what you mean by "irb doesn't run" |
| 03:27:41 | evan | i see you're in jit_visit.hpp |
| 03:27:48 | evan | which is the right place, but i'm not sure what your patch is doing. |
| 03:27:53 | evan | ok, later. |
| 03:28:17 | rue | Replaced by what? |
| 03:30:30 | slava | hi evan |
| 03:35:39 | libc | evan, it fixes several things |
| 03:36:05 | libc | evan, like 0 - 1 = 1073741823 |
| 04:01:17 | boyscout | 1.8.7: IO#getbyte (implemented new method) - f7c1522 - Marc-Andre Lafortune |
| 04:01:17 | boyscout | 1.8.7: IO#bytes (implemented new method) - 8e0312f - Marc-Andre Lafortune |
| 04:01:17 | boyscout | 1.8.7: IO#each_char (implementation of new method) - 39aa2f6 - Marc-Andre Lafortune |
| 04:01:17 | boyscout | 1.8.7: IO#chars, #readbyte, #lines (implemented new methods) - a34f420 - Marc-Andre Lafortune |
| 04:01:17 | boyscout | 1.8.7: ARGF#bytes, chars, each_char, getbyte, lines, readbyte (implemented new methods) - c810fec - Marc-Andre Lafortune |
| 04:01:19 | boyscout | 1.8.7: ENV.delete_if, .each, .each_key, .each_pair, .each_value, .reject!, .select (optional block) - fbb991a - Marc-Andre Lafortune |
| 04:01:22 | boyscout | Not implementing GC.stress= and Process.exec - ebf0f64 - Marc-Andre Lafortune |
| 04:01:24 | boyscout | 1.8.7: StringIO#getbyte, #readbyte, #each_char, #chars (implemented new methods) - e6d2b19 - Marc-Andre Lafortune |
| 04:04:45 | boyscout | CI: e6d2b19 success. 2683 files, 10344 examples, 32915 expectations, 0 failures, 0 errors |
| 05:56:29 | evan | libc_: why have you not committed those fixes? |
| 05:56:52 | libc | evan, I didn't finished, I can commit them |
| 05:56:58 | evan | also |
| 05:57:09 | evan | the jit isn't hooked up to run automatically |
| 05:57:24 | evan | -Xrbx.jit.enabled isn't running it. |
| 05:57:28 | evan | i'm working on that now |
| 05:57:37 | evan | why do you say it doesn't run irb? |
| 05:57:39 | libc | hm, runs for me |
| 05:57:45 | evan | it's not the LLVM JIT |
| 05:57:52 | evan | it's likely the old one |
| 05:57:52 | libc | it is llvm jit |
| 05:57:55 | evan | which is completely busted. |
| 05:58:02 | evan | then you must have hooked it up yourself |
| 05:58:05 | evan | because i haven't yet. |
| 05:58:53 | evan | ah hrm. |
| 05:58:56 | libc | evan, my evidence :) -Xrbx.jit.show_compiling puts JIT compiling method name, and when I change jit_visit.hpp errors messages are actually go away |
| 05:58:58 | evan | i guess it might actually sort of work |
| 05:59:07 | evan | completely by accident |
| 05:59:20 | evan | now that I look at it. |
| 05:59:27 | evan | because I wired it into make_machine_method |
| 05:59:33 | evan | which is what the current JIT uses |
| 05:59:39 | libc | yeah |
| 05:59:43 | evan | ok, nm! |
| 05:59:44 | evan | my mistake |
| 05:59:51 | evan | i didn't intend for it to work :D |
| 06:00:08 | evan | you should commit those fixes |
| 06:00:08 | libc | background thread still should have broken primitives |
| 06:00:14 | evan | huh? |
| 06:00:39 | libc | the last hunk in diff, I reresolve_primitives after jitting |
| 06:00:50 | evan | why? |
| 06:00:53 | evan | why did you do that? |
| 06:01:08 | libc | activate overwrites it, at least as far as I understand |
| 06:01:31 | libc | machinemethod::activate |
| 06:01:48 | evan | hm |
| 06:01:51 | evan | then your fix is wrong |
| 06:02:01 | evan | because it shouldn't change it if it points to a primitive |
| 06:02:05 | evan | ie, they should be completely ignored |
| 06:02:13 | evan | resolving it early doesn't help |
| 06:02:37 | libc | evan, I reresolve it after jit, not before |
| 06:02:46 | evan | oh |
| 06:02:52 | evan | thats the wrong way to handle that |
| 06:02:53 | libc | it helped me :) got prov_from_env error |
| 06:03:00 | libc | I know |
| 06:03:05 | evan | thats the error i'm getting now too |
| 06:03:09 | evan | was going to work on it shortly |
| 06:03:18 | evan | i'll fix the primitive override problem now |
| 06:03:31 | evan | whats the fixnum_tag fix for? |
| 06:03:38 | evan | what code was behaving incorrectly? |
| 06:03:48 | libc | 0-1 = 1073741823 |
| 06:03:56 | libc | and 0 + -1 |
| 06:04:50 | evan | hm, let me check. |
| 06:05:22 | evan | huh |
| 06:05:22 | evan | weird. |
| 06:05:27 | evan | so why that change? |
| 06:05:30 | evan | i'm trying to understand it |
| 06:05:37 | evan | because i'm worried we've got a similar problem elsewhere |
| 06:06:11 | libc | because you store them in 31bit |
| 06:06:13 | libc | and << |
| 06:06:25 | libc | then cast to 32bit |
| 06:07:01 | libc | 1073741823 is 30 ones (31 ones in fixnum representation) |
| 06:07:48 | evan | hm. |
| 06:09:15 | evan | i guess the integer types don't work the way I thought they did in LLVM |
| 06:12:31 | evan | libc_: i guess if a 31bit is used throughout |
| 06:12:38 | evan | the upper bits aren't properly cleared? |
| 06:12:53 | libc | the upper bit is a sign |
| 06:13:15 | libc | when you shl in 31bits you lose it, and when cast to 32bit the upper bit is always zero |
| 06:13:38 | evan | ah |
| 06:13:40 | evan | i see |
| 06:14:00 | evan | my problem was asking the question "which 31bits of a 32bit int are used" |
| 06:14:11 | evan | i had the wrong assumption about which section of bits was used |
| 06:14:41 | libc | heh, strange assumption |
| 06:14:47 | evan | i guess so. |
| 06:16:17 | evan | so why haven't you commited these fixes? |
| 06:16:37 | evan | other than you've got a weird coding style |
| 06:16:50 | evan | 'Value * tagged' mmm, no. |
| 06:16:55 | evan | 'Value* tagged' please |
| 06:17:59 | evan | also |
| 06:18:06 | evan | why are you reloading vars_? |
| 06:18:10 | evan | that doesn't seem right at all. |
| 06:18:23 | evan | oh oh |
| 06:18:25 | evan | i know why. |
| 06:18:34 | evan | because create_block causes it to move. |
| 06:18:35 | evan | nm! |
| 06:18:41 | evan | we should only need to do that once |
| 06:18:57 | evan | but i guess we don't know which create_block is run first |
| 06:18:59 | evan | so this is fine. |
| 06:19:30 | evan | libc_: ? |
| 06:19:33 | evan | hello? |
| 06:19:34 | libc | doing rebase |
| 06:20:43 | evan | i've got a whole bunch of changes locally |
| 06:20:48 | evan | but i can wait until you commit these |
| 06:22:23 | libc | evan, I also added check_serial instruction, should I left it out, or push? |
| 06:22:59 | evan | if you've got it |
| 06:23:02 | evan | go ahead and push it |
| 06:23:04 | evan | i didn't do it yet. |
| 06:23:28 | libc | you did rbx_check_serial though |
| 06:23:51 | boyscout | For loops skip the most recent variable scope - cbbec37 - Eugene Pimenov |
| 06:23:51 | boyscout | Check serial instruction for llvm JIT - 2ef2dbc - Eugene Pimenov |
| 06:23:51 | boyscout | LLVM jit fixes - 77f77e7 - Eugene Pimenov |
| 06:23:57 | evan | libc_: so I did! |
| 06:24:02 | evan | but I guess i never wired up the JIT to call it. |
| 06:24:07 | evan | i did a bunch of the util functions at once |
| 06:24:14 | evan | and then went back and wired them up to be called |
| 06:24:17 | evan | must have missed that one |
| 06:24:43 | evan | libc_: on these fixes, try and be a little more details in your commit message :) |
| 06:24:52 | libc | evan, I put details after first line |
| 06:24:58 | evan | ok good! |
| 06:24:59 | evan | nm then! |
| 06:25:42 | evan | oh, you finally commited your for fix too |
| 06:25:46 | evan | thanks for the attention to detail! |
| 06:26:11 | libc | yeah :) |
| 06:30:52 | slava | evan: so llvm converts stack usage into registers for you, right |
| 06:32:10 | boyscout | CI: 77f77e7 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors |
| 07:03:57 | evan | slava: if it can, yes. |
| 07:04:45 | slava | what scope does it operate on for this? |
| 07:04:51 | slava | just basic blocks or the whole procedure? |
| 07:07:29 | evan | i'd imagine it tries to cross basic blocks |
| 07:07:39 | evan | it has to be careful though |
| 07:07:47 | evan | since while they can be registers |
| 07:07:54 | evan | the stack is seen globally |
| 07:08:00 | evan | so the GC can see it |
| 07:10:55 | slava | evan: how does your GC sweep values that were saved in registers between procedure calls? |
| 07:11:53 | evan | they're not in registers at that point |
| 07:11:54 | evan | thats how. |
| 07:12:15 | slava | ok |
| 07:19:26 | slava | I'm extending my stack->register pass to work on more than just basic blocks. I've got it doing diamonds now, I'm going to test it more then make it do loops |
| 07:20:17 | evan | slava: is it just tracking when the flush from registers needs to happen more carefully? |
| 07:20:44 | slava | yeah |
| 07:21:15 | slava | for gc, I'm going to build a list of live registers at every gc point, and if the gc check actually succeeds it will save/restore those registers to a known memory area when calling gc |
| 07:21:30 | evan | ah |
| 07:21:36 | evan | so you're going to allow it to scan register contents |
| 07:21:48 | slava | yeah, otherwise its unsound |
| 07:21:56 | evan | wont that really be scanning the stack for where the registers get spilled to? |
| 07:22:12 | evan | since by the time you get to the scanning code, those registers will have spilled |
| 07:22:16 | slava | yeah, and generating the code that performs the spilling, even |
| 07:22:37 | evan | ah, so at each gc point, it spills the registers to some memory and lets the GC know where it spilled them and how many there are |
| 07:22:37 | slava | when the gc actually gets called, the values are still in registers though |
| 07:22:43 | slava | yeah |
| 07:24:26 | evan | and after the gc finishes |
| 07:24:26 | evan | it restores from that memory |
| 07:24:26 | slava | exactly |
| 07:24:26 | evan | that the GC has updated |
| 07:24:26 | evan | that seems like about the same thing i'm doing now |
| 07:24:26 | slava | but llvm does it for you? |
| 07:24:26 | evan | i suppose it's more coarse |
| 07:24:27 | evan | it handles all the registers itself |
| 07:24:27 | evan | the output code thus far is pretty nice |
| 07:24:27 | evan | i haven't thrown anything super complex at it yet |
| 07:24:27 | slava | and generates info that your gc can look at? |
| 07:24:27 | evan | i should check |
| 07:24:28 | evan | i could generate code for each safe point |
| 07:24:28 | evan | sure |
| 07:26:57 | slava | I haven't even tested it for real yet. I'm just throwing IR at it, spotting mistakes, and adding unit tests that assert some invariant or another |
| 07:28:32 | evan | well, let me know how it goes |
| 07:28:34 | slava | does your jit itself have unit tests? |
| 07:28:37 | evan | hows C++ going for ya? |
| 07:28:43 | slava | or do you just run your ordinary ruby specs against it |
| 07:28:56 | evan | running the ordinary ruby specs against it |
| 07:29:07 | slava | haven't done much on the VM side for a while, but I have an on-and-off project to refactor it to not use GNU extensions, so that I can use other C++ compilers |
| 07:29:07 | evan | i've been thinking about jit unit tests |
| 07:30:49 | evan | but non written |
| 07:38:06 | dbussink | evan: don't know whether you've seen it, but looks like i've stumbled on a gc bug http://github.com/evanphx/rubinius/issues#issue/5 |
| 07:42:41 | evan | dbussink: interesting. |
| 07:42:53 | evan | thats kind of a GC bug |
| 07:43:11 | evan | dbussink: is it easy to make happen? |
| 07:49:39 | dbussink | evan: yeah, well, i think it's related to the fact that there is one spec in do_postgres that tries to connect with an incorrect password and that timeouts after a few seconds (some sort of security measure in postgres) |
| 07:50:06 | dbussink | evan: so it doesn't do anything for a short period and during that time the gc runs and exposes the issue |
| 07:50:16 | dbussink | so it's reliably reproducable |
| 07:52:33 | evan | did you reproduce it with DEV=1 ? |
| 07:52:50 | evan | could you update that issue and tell me how I can make it happen? |
| 07:58:21 | dbussink | evan: yeah, i can do that, gotta go now to a customer first though |
| 08:00:09 | evan | ok. |
| 11:39:45 | rue | Woo |
| 11:40:31 | scoopr | hoo? |
| 16:23:09 | balint | hey, I created a ticket for my first patch: https://rubinius.lighthouseapp.com/projects/5089/tickets/775-patch-dirglob-recursively-matches-any-n ondot-subdirectories-with |
| 16:23:21 | balint | should I do anything else? |
| 17:07:42 | rue | balint: No, that should be fine |
| 17:09:08 | balint | rue: thank you. I guess I am just kind of impatient :) |
| 17:09:24 | rue | balint: Does that affect any other specs in either direction? |
| 17:10:26 | balint | rue: no, there were two less failures than without the patch (that's because Dir.[] is an alias for Dir.glob so two specs were fixed with one 'stone') |
| 17:16:18 | rue | Hm. The existing logic seems a bit suspect |
| 17:19:12 | balint | rue: ? |
| 17:27:49 | rue | The logic seems a bit odd, to check the "file" separately...but maybe it is the best way to do it. |
| 17:28:14 | evan | morning |
| 17:28:46 | evan | balint: you need to write a spec for it |
| 17:29:07 | evan | oh, there were specs? must have been tagged |
| 17:29:09 | balint | evan: there was a failing spec, my patch is a fix |
| 17:29:43 | evan | okey |
| 17:29:45 | evan | one sec! |
| 17:32:12 | rue | evan: Do you have changes to vm.{c,h}pp incoming? The header is pretty cluttered |
| 17:32:22 | evan | balint: nice! ok, i'm going to commit this shortly |
| 17:32:28 | evan | balint: and you get your free commit bit! |
| 17:32:36 | evan | yes |
| 17:32:38 | evan | i have changes incoming. |
| 17:32:43 | evan | going to commit them shortly |
| 17:33:02 | evan | it's not really that cluttered |
| 17:33:05 | evan | anyway |
| 17:34:04 | rue | Yeah, it is :) |
| 17:34:09 | evan | nah. |
| 17:34:17 | evan | there are much more cluttered ones. |
| 17:35:42 | rue | That I shall not dispute |
| 17:36:01 | balint | evan: thank you! my github user name is balinterdi |
| 17:36:06 | evan | if you're going to spruce them up, please try and stick with the existing style |
| 17:36:59 | rue | evan: Mm, oh, is there any reason to not make constructors explicit and prohibit copy construction by default? |
| 17:37:43 | evan | better question: is there a reason to do those things? |
| 17:42:21 | rue | In short, yes. It prevents errors |
| 17:42:35 | rue | (It is one of the "Efficient C++" items, too.) |
| 17:44:12 | rue | Erm, also the more well-known "Effective C++" |
| 17:45:38 | evan | so, you'd add explicit to all constructors |
| 17:45:54 | scoopr | isn't explicit more useful only when a constructor happens to take excatly one param |
| 17:45:59 | evan | and declare a copy construct thats not defined? |
| 17:48:54 | rue | Yes, explicit is only for constructors taking one parameter |
| 17:48:57 | scoopr | hiding copyconstructor is occasionally nice, but I wouldn't care to do that *everywhere* .. though you can do that in a base class (like call it, say Uncopyable) |
| 17:49:24 | radhruin | Well, it is also useful for constructors that take multiple parameters but the others have a default value. |
| 17:49:45 | rue | Mm, yeah, /requiring/ one parameter |
| 17:49:58 | scoopr | well, that's implictly single param constructor, point still stands |
| 17:50:06 | evan | sure, for ones that take one param, explicit seems ok |
| 17:50:10 | evan | thats a small subset of ones |
| 17:50:14 | evan | as for copy collector |
| 17:50:25 | evan | making a superclass Uncopyable that things inherit from seems logical |
| 17:50:39 | evan | that explains to future users why it's there |
| 17:50:44 | evan | for ObjectHeader though |
| 17:50:51 | evan | define the copy collector right in there |
| 17:50:55 | evan | with a comment about why it's there |
| 17:51:18 | evan | to keep the class hierarchy clean for Object and friends |
| 17:53:35 | rue | 'Es |
| 17:54:08 | evan | is that a yes? |
| 17:54:09 | evan | :D |
| 17:55:32 | rue | 'Es |
| 17:55:42 | evan | recursive answers! |
| 17:59:43 | scoopr | I would start speaking in unlamdas, if I only knew how! |
| 18:01:45 | evan | hm |
| 18:01:49 | evan | is gh slow this morning...? |
| 18:02:04 | evan | bah, it is. |
| 18:02:10 | boyscout | fixes Dir.glob recursively matches any nondot subdirectories with '**/' - 99ac594 - Balint Erdi |
| 18:02:11 | boyscout | Ignore directories with no access to - ed149ac - Evan Phoenix |
| 18:02:11 | boyscout | Fix args to show_backtrace - b53ec2e - Evan Phoenix |
| 18:02:11 | boyscout | Handle ArgumentErrors and #exit's that bubble to the top - 8ee0821 - Evan Phoenix |
| 18:02:11 | boyscout | Add ability to turn on GIL debugging at runtime - bf09647 - Evan Phoenix |
| 18:02:11 | boyscout | Make thread::Mutex recursive by default - 042144b - Evan Phoenix |
| 18:02:13 | boyscout | Update CallFrame::ip so backtraces in JITd code is correct - 0f20e45 - Evan Phoenix |
| 18:02:15 | boyscout | Wire background compiling thread into JIT mode - e53284c - Evan Phoenix |
| 18:02:19 | evan | there we go! |
| 18:02:40 | evan | -Xjit.enabled turns the JIT on, using the background thread |
| 18:02:57 | evan | -Xjit.show will print out whenever the JIT queues and finishes compiling a method |
| 18:03:17 | rue | Excellent |
| 18:03:25 | boyscout | CI: Build e53284c failed. http://ci.rubini.us/rubinius/builds/e53284c829c3357fb35ccc8abd05abcc389af96d |
| 18:03:31 | evan | BOO |
| 18:03:43 | evan | ah crap. |
| 18:04:17 | evan | one sec |
| 18:08:39 | rue | evan: Build-time RBX_LLVM still required? |
| 18:09:16 | evan | yes. |
| 18:09:24 | evan | i'm fixing things right now. |
| 18:10:21 | boyscout | Properly protect code that uses LLVM - e8de010 - Evan Phoenix |
| 18:14:14 | scoopr | if I have llvm in odd place, what would be the best way to tell rbx that? LDFLAGS="-L/opt/llvm/lib" CXXFLAGS="-I/opt/llvm/include" rake build ? |
| 18:14:22 | evan | no |
| 18:14:32 | evan | well, are you using SVN head? |
| 18:14:35 | evan | of llvm |
| 18:14:45 | scoopr | yes, but that's maybe month old |
| 18:14:53 | evan | probably won't work then. |
| 18:14:59 | evan | my patch made it in a week ago |
| 18:15:01 | scoopr | willing, to update it =) |
| 18:15:23 | scoopr | (willing to learn comma placement too) |
| 18:16:02 | evan | heh |
| 18:17:03 | rue | scoopr: Just symlink it? |
| 18:29:55 | boyscout | Disable the JIT for methods with primitives installed - ead8407 - Evan Phoenix |
| 18:43:38 | evan | well, irb runs under the JIT when it's pre-compiled |
| 18:44:01 | evan | going to figure out why it doesn't compile |
| 19:03:53 | sandal | evan: is rubinius targeting Ruby 1.8.7+ or mostly aiming for 1.8.6 compat? |
| 19:04:38 | scoopr | ah right, the llvm c/ldflags come from llvm-config.. it's in my path though, and it doesn't find it in rake |
| 19:04:55 | evan | sandal: 1.8.6 |
| 19:04:58 | scoopr | ah wait |
| 19:05:07 | sandal | evan: great, thanks |
| 19:05:19 | scoopr | it tries to find it from external_libs, so that was the symlink rue ment :P |
| 19:05:26 | evan | sandal: but marcandre has been coding up 1.8.7 and 1.9 support for us |
| 19:05:37 | evan | sandal: in lib/1.8.7 and lib/1.9 |
| 19:05:43 | evan | they're overlays for the current code |
| 19:05:44 | sandal | evan: how will that work? Enabled via flag? |
| 19:05:53 | evan | yeah, a flag probably |
| 19:06:01 | evan | he just started, we haven't worked out the details yet. |
| 19:06:11 | sandal | request. please make 1.8.7 an explicit choice != 1.8 |
| 19:06:27 | evan | how do ya mean? |
| 19:07:04 | sandal | I mean... I wouldn't like to see 1.8.7 supplant 1.8.6 |
| 19:07:22 | evan | sure, thats our plan |
| 19:07:31 | evan | i'm curious why you're requesting it |
| 19:08:21 | sandal | oh... just because it makes some book authors, library maintainers, and distro managers frustrated that 1.8.7 exists |
| 19:08:33 | sandal | It would have been fine as an experimental branch |
| 19:08:46 | sandal | but its frustrating as the mainline Ruby 1.8 |
| 19:08:57 | evan | certainly. |
| 19:09:24 | sandal | anyway, if that's already the plan, that's great |
| 19:09:32 | sandal | I just wanted to make sure I was reporting accurately in my talk |
| 19:09:52 | evan | gotcha |
| 19:10:11 | brixen | sandal: 1.8.7 make some rubyspec writers frustrated it exists too :) |
| 19:10:20 | sandal | My personal opinion is that soon enough, most alternative implementations will be a better Ruby 1.8 than core Ruby 1.8, if they aren't already |
| 19:11:09 | sandal | But I think that'll be more likely to be the case if they lock to 1.8.6, which seems like what everyone is doing |
| 19:11:31 | sandal | It's just sort of scary to think of things like Ruby 1.8.8 backporting 1.9 *syntax* |
| 19:12:07 | brixen | I'm just glad we run out of digits after 1.8.9 |
| 19:12:16 | sandal | ahaha, good point! |
| 19:12:21 | jptix | 1.8.10! |
| 19:12:33 | sandal | jptix: not going to happen due to matz's preference |
| 19:12:35 | brixen | jptix: noooo, unbounded craziness |
| 19:12:43 | scoopr | whoa, Resolv#getaddresses resolves localhost FAILED |
| 19:12:44 | scoopr | Expected 0 to be greater than 0 |
| 19:13:12 | sandal | brixen: then maybe they'll just redefine the meaning of patchlevels |
| 19:13:19 | sandal | brixen: to include new features :) |
| 19:13:37 | brixen | sandal: yes! as bit patterns |
| 19:13:53 | brixen | bit 12, new Array#first protocal |
| 19:13:57 | brixen | etc |
| 19:14:02 | brixen | it will be wicked cool |
| 19:15:35 | sandal | is there any sort of official rubinius logo? |
| 19:15:49 | brixen | kinda sorta |
| 19:15:55 | evan | the lower case r is usually used |
| 19:16:10 | brixen | sandal: http://twitter.com/rubinius |
| 19:16:22 | brixen | we, um, need to tweet a bit on that account |
| 19:16:24 | brixen | heh |
| 19:16:27 | evan | heh |
| 19:16:31 | sandal | cool, thanks |
| 19:16:47 | brixen | evan: we're falling behind the cool kids like maglev and macruby |
| 19:16:55 | brixen | we better get on it |
| 19:17:01 | evan | yeah we are. |
| 19:17:24 | evan | i'm so happy I built the JIT as an explicit thing first |
| 19:17:36 | evan | since I can debug it by just explicitly JIT'ing one method |
| 19:18:49 | scoopr | guess what Socket.getaddrinfo("127.0.0.1", nil)[0][2] is for me? :P |
| 19:20:01 | evan | *shrug* |
| 19:20:03 | evan | 42? |
| 19:20:46 | scoopr | a host that passenger.prefPane has set up for me.. |
| 19:20:50 | sandal | oh man, putting all these various logos in one place looks disgusting. Time to revise to use text :) |
| 19:20:52 | scoopr | (namely, gems.local) |
| 19:21:30 | evan | those specs suck |
| 19:21:37 | evan | they assume all kinds of stuff |
| 19:21:37 | brixen | scoopr: those type of Socket specs could use a better approach |
| 19:21:51 | brixen | scoopr: suggestions/patches welcome :) |
| 19:23:51 | scoopr | ah, I know nothing about how that should work, I'm actually more worried that has passenger.prefpane "broken" my system by changing something that some apps might assume as well |
| 19:24:42 | evan | no |
| 19:24:48 | evan | those specs just assume too much |
| 19:25:13 | scoopr | k |
| 19:49:26 | dbussink | evan: i was trying with a debug build to reproduce the gc bug resulted in some other error |
| 19:49:43 | dbussink | evan: my debug build gobbles up 4gb of virtual memory and can't mmap any more |
| 19:50:58 | evan | wow. |
| 19:51:01 | evan | never seen that. |
| 19:51:12 | evan | the main thing i need to know is how to repro it. |
| 19:51:15 | evan | you didn't specify that |
| 19:55:38 | dbussink | evan: hmm, now i'm getting another one :S |
| 19:57:26 | evan | :/ |
| 19:58:38 | brixen | evan: ok, I've got one that I can repro unless I'm in gdb :/ |
| 19:58:40 | brixen | evan: http://gist.github.com/118219 |
| 19:58:55 | brixen | evan: how would you track that down? |
| 19:58:55 | evan | the best kind! |
| 19:59:10 | brixen | or the most frustrating... |
| 19:59:11 | evan | hm. |
| 19:59:24 | evan | thats a really big number. |
| 19:59:29 | evan | 2147487744 |
| 19:59:32 | brixen | yeah, look at the bit pattern |
| 19:59:38 | brixen | 4096 + bit 32 set |
| 19:59:52 | evan | almost like it's a truncation error |
| 20:00:15 | evan | or a casting problem. |
| 20:00:21 | brixen | yeah |
| 20:00:32 | brixen | if only I could get to a code location |
| 20:00:58 | evan | set a breakpoint on mmap |
| 20:01:03 | evan | or malloc |
| 20:01:09 | evan | that might throw a lot though.. |
| 20:01:10 | evan | hm. |
| 20:01:22 | brixen | it doesn't happen if I run rbx under gdb |
| 20:01:45 | brixen | I could try that though |
| 20:03:27 | dbussink | evan: i've updated the issue with how to reproduce it, it needs a postgres setup atm though |
| 20:03:36 | dbussink | evan: sqlite3 doesn't show the issue |
| 20:03:41 | evan | k |
| 20:07:17 | dgtized | hmm, I've got a spec hanging at Process.fork - return nil for the child process |
| 20:09:16 | dgtized | looks like wait_pid never returns because something is going wrong in the child's exit |
| 20:11:04 | dgtized | but there are 3 rbx processes alive, one is <defunkt>, one is blocked on a wait_pid, and the other is in pthread_mutex_lock from thread::Mutex::lock |
| 20:12:24 | evan | processes or threads? |
| 20:12:42 | dgtized | ps -a | grep rbx lists 3 processes |
| 20:12:49 | evan | not sure why that would be |
| 20:12:56 | dgtized | it's in the middle of a fork |
| 20:13:25 | evan | is this a tagged spec? |
| 20:13:38 | dgtized | it's just a normal ci run |
| 20:14:25 | dgtized | bin/mspec ci -B full and I tried it once with -fs to diagnose which spec was hanging |
| 20:15:01 | dgtized | I also cleaned, and rebuilt just to make sure |
| 20:15:08 | dgtized | not using llvm though |
| 20:17:04 | evan | thats fine |
| 20:17:10 | evan | in every one of these cases |
| 20:17:17 | evan | i'm looking for a clean repro |
| 20:17:28 | evan | the quicker you get that too me, the faster we get it fixed! |
| 20:17:35 | dgtized | it happens every time for me right now |
| 20:17:39 | evan | if you get the repro, open an issue, nad send me the url |
| 20:17:45 | evan | then you get a cookie! |
| 20:17:53 | dbussink | evan: http://github.com/evanphx/rubinius/issues/#issue/5 |
| 20:18:00 | dbussink | evan: now where's the cookie? |
| 20:18:06 | evan | you already did that |
| 20:18:09 | evan | PRE-cookie offer. |
| 20:18:11 | evan | sorry |
| 20:18:12 | evan | next one! |
| 20:18:20 | evan | i do owe you cookies though. |
| 20:18:30 | brixen | offers good only while supplies last... |
| 20:18:39 | brixen | oops, I ate all the cookies |
| 20:18:47 | evan | BRIXEN! |
| 20:18:51 | evan | shakes head. |
| 20:18:52 | evan | sorry guys |
| 20:18:53 | brixen | heh |
| 20:18:57 | evan | brixen ate all the cookies. |
| 20:23:10 | evan | dgtized: open up an issue |
| 20:23:18 | evan | dgtized: so we can track it. |
| 20:25:01 | boyscout | Add -Xgc.show to print out when the GC runs - 720b6a4 - Evan Phoenix |
| 20:25:01 | boyscout | Location objects now indicate if the running method was JITd - dd35e12 - Evan Phoenix |
| 20:25:01 | boyscout | Read VariableScope out of CallFrame on every use - a4ed51b - Evan Phoenix |
| 20:26:13 | evan | rad. |
| 20:26:30 | evan | bin/rbx -Xjit.enabled -S irb |
| 20:26:31 | evan | runs |
| 20:31:04 | dgtized | fuck markdown for code examples -- how the hell are you supposed to indent that many lines in a browser editor |
| 20:33:38 | rue | Pretty sure <code /> works too. |
| 20:33:58 | dbussink | dgtized: put in links to gists also works |
| 20:34:14 | rue | But I use It's All Text, so I types in the vims |
| 20:37:44 | dgtized | http://github.com/evanphx/rubinius/issues/#issue/7 -- yea <pre><code> does work, it's just the indent syntax is such an annoying shortcut |
| 20:40:00 | rue | I usually indent(ed) code in e-mails and such |
| 20:43:56 | evan | I use <pre> |
| 20:44:03 | evan | ok, lunch! |
| 21:22:18 | evan | oh, backtraces when running with -d now show which frames are running via JITd method |
| 21:22:21 | evan | s |
| 21:33:39 | evan | dgtized: is this hanging happening everytime |
| 21:33:42 | evan | and what commands are you runing |
| 21:33:44 | evan | just 'rake' ? |
| 21:36:40 | evan | ok, i see it happening on elle |
| 21:36:43 | evan | checking it out now. |
| 21:47:34 | boyscout | CI: e8de010 success. .................................................................................................... .................................................................................................... .................................................................................................... ............................................................................... |
| 21:47:39 | evan | that was me. |
| 21:48:43 | rue | You do not have to print all the dots yourself |
| 21:49:00 | evan | no, i've got a script to do that. |
| 21:54:59 | boyscout | Manage the GIL around fork() properly - 5562ec6 - Evan Phoenix |
| 21:55:07 | evan | dgtized: that should fix it for ya |
| 22:00:36 | rue | evan: Should there be some special marker for the JITted frames in the bt? |
| 22:01:08 | evan | there is, yes. |
| 22:01:13 | evan | Location#is_jit |
| 22:01:23 | evan | it's not showed in backtrace unless $DEBUG is on |
| 22:02:26 | boyscout | CI: 5562ec6 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors |
| 22:02:29 | evan | yay. |
| 22:04:17 | rue | Ah, I see it now |
| 22:04:46 | rue | By the by, -X should probably warn if it gets an option it does not recognise such as *cough* jit.enable |
| 22:05:27 | evan | hehe |
| 22:05:30 | evan | yeah, i did the same |
| 22:05:33 | evan | not sure how though |
| 22:05:44 | evan | since, by default, there is no closed set of options |
| 22:06:02 | evan | -X just throws stuff into the general RUBY_CONFIG |
| 22:08:28 | rue | Mm. Could maybe restrict e.g. the "vm." and "jit." namespaces to require definitions, if not all? |
| 22:09:23 | evan | hm |
| 22:09:34 | evan | well, -Xconfig.print is useful to figure out if they got set properly |
| 22:09:50 | evan | but yes, i suppose we could close the set of options with certain prefixes |
| 22:11:39 | rue | Or alternatively only send "config." without further checks |
| 22:11:46 | evan | huh? |
| 22:15:17 | rue | Nm. |
| 22:27:05 | dgtized | evan: thanks that fixed it |
| 22:27:31 | dgtized | question, do we have a timeout on the build bots if they take too long running mspec ci? |
| 22:27:48 | evan | not atm, no. |
| 23:02:43 | yakischloba | evan: i notice rubinius ffi does not have get_array_of_foo like ruby-ffi does. do you know the reason for this inconsistancy? |
| 23:04:07 | evan | ruby-ffi added a whole bunch of stuff |
| 23:04:11 | evan | that wasn't in the original API |
| 23:04:18 | evan | and I haven't ported their stuff back in |
| 23:04:33 | yakischloba | okay, so its not bad, just a matter of getting it in there? |
| 23:04:37 | evan | yaeh |
| 23:04:49 | yakischloba | ok |
| 23:07:48 | yakischloba | maybe i will do a little of that soon then |
| 23:26:34 | evan | yakischloba: ok |
| 23:26:59 | yakischloba | looks pretty straightforward |
| 23:27:25 | slava | hi evan |
| 23:27:37 | slava | i'm pestering jrose with stupid questions about dataflow analysis |
| 23:28:29 | evan | hehe |
| 23:28:31 | evan | over email? |
| 23:29:32 | boyscout | Allocate storage for the strings, since they're freed - 2ec98ab - Evan Phoenix |
| 23:29:35 | slava | in #mlvm |
| 23:30:08 | evan | ah! I didn't know he was on IRC |
| 23:30:10 | evan | thats rad. |
| 23:32:05 | boyscout | CI: 2ec98ab success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors |
| 23:43:20 | boyscout | Warn for unrecognized vm options - f68f4b1 - Evan Phoenix |
| 23:43:28 | evan | see how fast I fix bugs when you guys open issues? |
| 23:43:28 | evan | :D |
| 23:47:58 | boyscout | CI: f68f4b1 success. 2683 files, 10346 examples, 32917 expectations, 0 failures, 0 errors |
| 23:59:27 | boyscout | Add descriptions to config variables - 2bc8d00 - Evan Phoenix |
| 23:59:30 | evan | bin/rbx -Xconfig.print=2 -v |
| 23:59:35 | evan | for all your configuration variable fun |