Show enters and exits. Hide enters and exits.
| 00:30:05 | jakedouglas | hi |
| 02:13:44 | boyscout | Allow IO.setup to be passed a numeric mode - 3c8751b - Jake Douglas |
| 02:13:44 | boyscout | Make a File.open spec more sensible. Testing for an exception shouldn't rely on the return value of this block. - dea9a8c - Jake Douglas |
| 02:13:44 | boyscout | Remove failing tags for some File specs. - 9fa8477 - Jake Douglas |
| 02:22:19 | boyscout | CI: rubinius: 9fa8477 successful: 3498 files, 14402 examples, 42183 expectations, 0 failures, 0 errors |
| 05:23:06 | boyscout | Generalize AST grapher to accept other node types. - 8740ca3 - Brian Ford |
| 05:23:06 | boyscout | Some fixes for File.open specs. - c43ba3e - Brian Ford |
| 05:27:09 | jakedouglas | brixen: scary |
| 05:28:27 | brixen | ? |
| 05:29:33 | jakedouglas | heh i just didn't understand at first. |
| 05:29:44 | brixen | ah ok |
| 05:30:12 | jakedouglas | hey uhm…theres a problem with the json gem + gc :( |
| 05:30:23 | jakedouglas | really json gems fault i guess. |
| 05:30:39 | brixen | what's it do? |
| 05:33:01 | boyscout | CI: rubinius: c43ba3e successful: 3498 files, 14402 examples, 42180 expectations, 0 failures, 0 errors |
| 05:34:04 | jakedouglas | it doesnt set the fields on one of it's structs to null when it allocates it. then it tries to create a new ruby object to assign to it, which triggers gc, which calls it's mark function, which calls rb_gc_mark_maybe with the field, and in some cases the garbage data of the unset field computes to appear as a capi handle |
| 05:35:03 | jakedouglas | which obviously causes an explosion |
| 05:35:50 | brixen | ahh yeah, bad news |
| 05:36:12 | brixen | uninitialized data sucks |
| 06:35:38 | jakedouglas | yea. |
| 06:46:37 | jakedouglas | the profiler seems to give me inconsistent results |
| 09:21:27 | boyscout | Fix MatchData#string returns a frozen copy of the match string - 2e4d754 - Jose Narvaez |
| 09:21:28 | boyscout | Remove MatchData#string failing tags - 983d63d - Jose Narvaez |
| 09:23:19 | dbussink | morning |
| 09:30:04 | boyscout | CI: rubinius: 983d63d successful: 3498 files, 14403 examples, 42182 expectations, 0 failures, 0 errors |
| 13:07:47 | boyscout | StringIO#seek should raise IOError on closed stream - 1baf6f7 - Dirkjan Bussink |
| 13:07:48 | boyscout | Remove tag for passing StringIO#seek spec - 06267f4 - Dirkjan Bussink |
| 13:16:22 | boyscout | CI: rubinius: 06267f4 successful: 3498 files, 14404 examples, 42183 expectations, 0 failures, 0 errors |
| 13:53:29 | boyscout | Handle frozen strings used for a StringIO - 4e0ac9f - Dirkjan Bussink |
| 13:53:30 | boyscout | Remove tags for now passing StringIO specs - d0eab59 - Dirkjan Bussink |
| 14:02:01 | boyscout | CI: rubinius: d0eab59 successful: 3498 files, 14410 examples, 42199 expectations, 0 failures, 0 errors |
| 15:57:02 | dbussink | ugh, in some places mri is pretty retarded |
| 15:57:11 | dbussink | "Hello".freeze.gsub!(/e/, "e") => TypeError |
| 15:57:22 | dbussink | but "Hello".freeze.gsub!(/e/) { "e" } results in a RuntimeError |
| 15:57:43 | dbussink | brixen: is that something we should support completely too? |
| 16:00:02 | Defiler | I saw that ticket. Lame. :( |
| 16:01:35 | dbussink | Defiler: i wanted to fix some specs to changed it to runtimerror, then it blew up someplace else |
| 16:01:43 | dbussink | even took me some time to see the actual difference :P |
| 16:01:57 | dbussink | Defiler: is there an mri ticket for it then? |
| 16:03:30 | boyscout | Socket#bind should return the error code - d46ef17 - Dirkjan Bussink |
| 16:03:30 | boyscout | Remove tags for passing Socket#bind specs - ec26f57 - Dirkjan Bussink |
| 16:12:21 | boyscout | CI: rubinius: ec26f57 successful: 3498 files, 14412 examples, 42203 expectations, 0 failures, 0 errors |
| 16:13:12 | Defiler | dbussink: I just saw the rbx one.. not one fo rmri. |
| 16:13:17 | Defiler | 'for mri', sorry |
| 16:13:47 | dbussink | Defiler: huh, i don't seen an rbx ticket for it? |
| 16:14:29 | Defiler | http://github.com/evanphx/rubinius/issues/issue/427 |
| 16:14:34 | Defiler | that one |
| 16:14:47 | Defiler | sorry, just read the preview in my inbox.. guess that's related but not the same |
| 16:15:38 | dbussink | Defiler: ah ok, yeah, that's a different one :) |
| 17:52:05 | boyscout | Raise ArgumentError if too much data is to be consumed in Marshal.load - 8dc9e2a - Dirkjan Bussink |
| 17:52:05 | boyscout | Remove tag for now passing Marshal.load spec - 92ff653 - Dirkjan Bussink |
| 17:59:27 | boyscout | Remove tag for passing BigDecimal#power spec - ef749f0 - Dirkjan Bussink |
| 18:00:44 | boyscout | CI: rubinius: 92ff653 successful: 3498 files, 14413 examples, 42204 expectations, 0 failures, 0 errors |
| 18:11:09 | boyscout | CI: rubinius: ef749f0 successful: 3498 files, 14414 examples, 42214 expectations, 0 failures, 0 errors |
| 18:13:08 | boyscout | Remove tags for passing Object#to_yaml specs - bf7c6f0 - Dirkjan Bussink |
| 18:13:17 | jakedouglas | really slaying them today huh |
| 18:14:52 | dbussink | jakedouglas: hehe, just killing some easy stuff |
| 18:15:10 | dbussink | jakedouglas: btw, i think it's a good idea to write that json thing up in an issue |
| 18:15:14 | dbussink | so it's not forgotten |
| 18:15:39 | jakedouglas | i wont forget, it happens every 4-5 times i run my tests :) |
| 18:16:11 | jakedouglas | really it just requires a patch to evan's json gem or something i guess |
| 18:18:41 | dbussink | jakedouglas: well, it's not that you don't forget, but that it's fixed |
| 18:18:52 | dbussink | jakedouglas: evan could apply it to his json fork |
| 18:19:15 | jakedouglas | yea. ill write something today or tomorrow. |
| 18:19:38 | jakedouglas | do you know anything about how the profiler works? |
| 18:19:42 | jakedouglas | im getting some strange results |
| 18:20:55 | dbussink | jakedouglas: can you reproduce those results? |
| 18:21:01 | dbussink | jakedouglas: and what's weird about them? |
| 18:21:44 | boyscout | CI: rubinius: bf7c6f0 successful: 3498 files, 14416 examples, 42216 expectations, 0 failures, 0 errors |
| 18:28:20 | jakedouglas | yea |
| 18:28:23 | jakedouglas | what im seeing is that |
| 18:28:34 | jakedouglas | for the same test suite |
| 18:29:07 | jakedouglas | the top profile result, taking ~28% of the time, its either FFI::Platform::POSIX.memset or FFI::Platform::POSIX.stat |
| 18:29:26 | jakedouglas | its one or the other, but the other is no where to be seen |
| 18:30:11 | jakedouglas | i dont know anything in the test suite that would change between runs that would cause a shift of 28% of the execution time from one thing to another |
| 18:30:38 | jakedouglas | im just supposed to use -Xprofile right? |
| 18:35:06 | jakedouglas | let me gist an example. |
| 18:36:54 | jakedouglas | http://gist.github.com/489762 |
| 18:42:29 | dbussink | jakedouglas: is this code we could run too? |
| 18:42:46 | dbussink | jakedouglas: otherwise you should ask evan or brixen if they can check it out |
| 18:43:07 | jakedouglas | hmm. unfortunately not yet |
| 18:43:55 | dbussink | jakedouglas: what does including -Xprofiler.graph give you? |
| 18:44:03 | jakedouglas | let me try. |
| 18:48:47 | jakedouglas | how do i read it? |
| 18:51:25 | dbussink | jakedouglas: well, you can see where calls come from etc. |
| 18:53:34 | jakedouglas | is the callee the one more to the left of the others? |
| 18:56:01 | dbussink | jakedouglas: do you have a gist? |
| 18:56:08 | jakedouglas | yea. just a sec. |
| 18:57:41 | jakedouglas | http://gist.github.com/489786 |
| 18:58:38 | jakedouglas | i kind of understand it |
| 18:59:16 | dbussink | jakedouglas: what you see in one block is the line that it's about, the callee's above it |
| 18:59:23 | dbussink | and the deeper stack beneath |
| 18:59:30 | dbussink | and the numbers also cross reference |
| 18:59:46 | jakedouglas | hmm |
| 19:00:12 | dbussink | jakedouglas: here you see it spends a lot of time in memset |
| 19:00:24 | dbussink | being called from the FFI::Memorypointer constructor |
| 19:00:44 | jakedouglas | so the confusing result was probably something about memset being called during stat? |
| 19:01:22 | dbussink | jakedouglas: yeah, that comes from File::Stat |
| 19:01:27 | dbussink | you can see that in [35] |
| 19:02:03 | jakedouglas | ah, now i see it |
| 19:02:04 | jakedouglas | okay |
| 19:02:42 | dbussink | jakedouglas: so improving stat performance should help you quite a bit :) |
| 19:03:00 | jakedouglas | indeed |
| 19:03:29 | jakedouglas | thanks |
| 19:14:32 | dbussink | jakedouglas: hmm, but the profile still looks off though :S |
| 19:14:59 | dbussink | jakedouglas: if i compare it to a profile of benchmark/rubinius/bm_stat.rb in the rbx tree |
| 19:15:33 | jakedouglas | darn. |
| 19:19:40 | dbussink | jakedouglas: also memset isn't as high up there |
| 19:19:44 | dbussink | as in your example |
| 19:19:58 | jakedouglas | yea. |
| 19:33:21 | jakedouglas | do i have to do something special other than 'rake build' when i change things under kernel/platform? |
| 19:33:34 | jakedouglas | i get errors |
| 19:33:36 | jakedouglas | An exception occurred loading the compiler |
| 19:33:36 | jakedouglas | no method 'suffix?' on nil:NilClass. (NoMethodError) |
| 19:34:39 | dbussink | jakedouglas: rake build should usually do the trick |
| 19:34:53 | jakedouglas | hmm. not doing it for me. |
| 19:35:16 | jakedouglas | im not doing anything special, not sure why its breaking |
| 19:35:24 | jakedouglas | if i undo my changes and rake build it works again |
| 19:36:25 | dbussink | jakedouglas: then it must be something in your changes ;) |
| 19:36:34 | jakedouglas | well duh |
| 20:11:19 | dbussink | jakedouglas: found it? |
| 20:11:31 | jakedouglas | yea i got it to built |
| 20:11:41 | jakedouglas | the profile stuff doest make any senes though |
| 20:11:42 | jakedouglas | sense |
| 20:11:48 | jakedouglas | i mean |
| 20:11:58 | jakedouglas | the stat benchmark doesnt run any faster if i get rid of the memset |
| 20:14:01 | Defiler | well, it's a sampling profiler |
| 20:14:06 | Defiler | so you can run into strange outcomes like that |
| 20:14:21 | Defiler | but that is pretty weird yeah |
| 20:15:07 | jakedouglas | and POSIX.stat doesn't even show up on the one from the test suite, but it dominates the benchmark |
| 20:17:04 | dbussink | Defiler: isn't the sampling profiler disabled for now? |
| 20:17:13 | dbussink | afaik -Xprofile doens't run a sampling profiler |
| 20:17:31 | Defiler | oh, what is it these days then? |
| 20:17:41 | dbussink | performance different is also too different i think for just a sampling profiler |
| 20:17:49 | Defiler | aah, ok |
| 20:20:07 | jakedouglas | is confused |
| 20:24:14 | dbussink | jakedouglas: you know what a sampling profiler is? |
| 20:25:07 | jakedouglas | yea |
| 20:25:28 | jakedouglas | im just confused about my results |
| 20:42:48 | jakedouglas | now i run again on the test suite and instead of POSIX.memset it shows POSIX.stat, as the big one... |
| 20:44:32 | jakedouglas | (with the profiler.graph) |
| 20:46:33 | dbussink | jakedouglas: should probably dig into this with evan |
| 20:46:41 | jakedouglas | ok. |