Show enters and exits. Hide enters and exits.
| 00:00:25 | brixen | vm/oop.hpp rather |
| 00:04:03 | wycats | evan: any ideas? |
| 00:05:42 | rue | wycats: Needs a guard...can you check if there is an ifndef on top of functional_hash.h? |
| 00:06:17 | wycats | I don't see a functional_hash.h |
| 00:06:30 | rue | Sorry, this one /usr/include/c++/4.2.1/tr1/functional_hash.h |
| 00:06:51 | wycats | I see: |
| 00:06:52 | wycats | #ifndef _TR1_FUNCTIONAL_HASH_H |
| 00:06:52 | wycats | #define _TR1_FUNCTIONAL_HASH_H 1 |
| 00:09:30 | rue | Actually, there probably is a top-level TR1 somewhere, but at least that define can be used in the profiler.hpp guard |
| 00:11:04 | rue | Yay, apparently there is no standard way to detect TR1. |
| 00:11:25 | rue | 4.3 has #define __GXX_EXPERIMENTAL_CXX0X__ 1 |
| 00:11:31 | rue | (Apparently) |
| 00:13:33 | rue | wycats: So, if you change the guard in profiler.hpp:26 to `ifndef _TR1_FUNCTIONAL_HASH_H`, it should get past that...obviously the mechanism could be slightly improved |
| 00:14:51 | rue | yakischloba: Does it build if you add brixen's definition? If not, pastie up what you get |
| 00:16:17 | yakischloba | just a se |
| 00:16:20 | yakischloba | c |
| 00:16:22 | yakischloba | was away |
| 00:16:25 | wycats | I'll try #if (__GNUC__ <= 4 && __GNUC_MINOR__ <= 2 && __GNUC_PATCHLEVEL__ < 1) again |
| 00:16:34 | wycats | I recloned |
| 00:24:36 | wycats | it built |
| 00:24:43 | wycats | can I push that change? |
| 00:25:56 | evan | sure |
| 00:27:25 | boyscout | Update conditional to match Snow Leopard's g++ correctly - edcf921 - Yehuda Katz |
| 00:27:47 | brixen | snow leopard in da haus, yo |
| 00:29:07 | rue | The TR1 files may not be present at all 4.2.1+, but the problem needs a wider solution anyway |
| 00:31:02 | boyscout | CI: edcf921 success. 2723 files, 10829 examples, 33851 expectations, 0 failures, 0 errors |
| 00:31:03 | yakischloba | i get this now |
| 00:31:04 | yakischloba | vm/marshal.cpp:80:6: error: missing binary operator before token "(" |
| 00:31:51 | evan | odd. |
| 00:32:04 | evan | ah |
| 00:32:08 | evan | that damn WORDSIZE |
| 00:32:23 | yakischloba | :) |
| 00:33:57 | evan | i wasn't following before |
| 00:34:03 | evan | i guess you don't have __WORDSIZE ? |
| 00:34:06 | yakischloba | correct |
| 00:34:29 | evan | remove that code |
| 00:34:31 | evan | and put in |
| 00:34:41 | evan | if(sizeof(long) > sizeof(int)) |
| 00:34:46 | evan | as a normal C condition |
| 00:34:53 | evan | or |
| 00:34:59 | evan | if(sizeof(long) == 8) |
| 00:35:08 | evan | thats more accurate anyway |
| 00:35:45 | yakischloba | ok |
| 00:35:55 | yakischloba | heh |
| 00:35:58 | yakischloba | it is in other places too |
| 00:36:06 | evan | just do that everywheres |
| 00:36:12 | yakischloba | ok. |
| 00:39:07 | yakischloba | vm/marshal.cpp:84: warning: right shift count >= width of type |
| 00:39:31 | evan | umm |
| 00:39:38 | evan | your condition is wrong |
| 00:39:49 | evan | it's running when you're on a 32bit machine |
| 00:39:53 | evan | it should not |
| 00:40:34 | yakischloba | this is something the compiler would notice? |
| 00:50:09 | rue | Yes |
| 00:55:15 | yakischloba | ok. i copied and pasted the condition |
| 01:02:49 | rue | Copied where? |
| 01:03:23 | yakischloba | to where evan instructed me to, replacing the original #if (__WORDSIZE != 64)/#endif |
| 01:04:07 | yakischloba | err |
| 01:05:03 | rue | Yeah, the compiler might complain since it sees it now |
| 01:05:12 | yakischloba | yeah |
| 01:05:14 | rue | The code should never get executed on your system, though |
| 01:07:23 | yakischloba | how can i build without warnings then |
| 01:07:28 | yakischloba | without warn=fail |
| 01:16:07 | rue | Yeah, good question, the better option would be to use a #define |
| 01:18:13 | rue | You can suppress the particular warning, too. Temporarily, to see if it builds otherwise you might just drop the -Werror from rakelib/vm.rake |
| 01:18:50 | rue | For former, google for warning suppression for shift, or bit ops, or ints etc. |
| 01:22:05 | yakischloba | ok well |
| 01:22:27 | yakischloba | i can get it to build. it would be sweet if a 'solution' was found though. i cant be the first person that has tried to build on tiger |
| 01:22:51 | evan | you're the first one in a while |
| 01:22:55 | evan | whats your diff look like? |
| 01:23:00 | yakischloba | well |
| 01:23:03 | yakischloba | im building with -Werror |
| 01:23:10 | yakischloba | without rather |
| 01:23:13 | evan | oh |
| 01:23:19 | evan | thats not a solution |
| 01:23:30 | yakischloba | correct |
| 01:23:36 | evan | that code is probably not working right for you then |
| 01:24:23 | yakischloba | why? the compiler complains about it but it should never take that path |
| 01:24:28 | yakischloba | unless i dont understand how it works |
| 01:24:50 | evan | ah |
| 01:24:50 | evan | i see |
| 01:33:23 | rue | evan: It is just the compiler seeing it insofar as estimate |
| 01:33:58 | rue | With a #define it is 'not there' at all, so that is definitely the better way to go |
| 01:34:15 | rue | I could swear that we had a bit of C for wordsize detection |
| 01:35:51 | evan | right |
| 01:35:53 | evan | yeah, so did I |
| 01:36:46 | rue | Shotgun might have it, it was a config script |
| 01:37:12 | evan | yeah |
| 01:46:08 | yakischloba | checking _LP64 has been suggested |
| 03:10:42 | evan | huzzah! |
| 03:10:46 | evan | generic method inlining! |
| 03:13:19 | lstoll | sweet! |
| 03:40:29 | slava | nice evan |
| 03:46:26 | evan | total = 100000000 |
| 03:46:33 | evan | hot loop: 9.1s |
| 03:46:55 | evan | def bar; 1 + 1; end; def foo(a) a + bar; end |
| 03:47:03 | evan | interpreter: 21s |
| 03:47:18 | evan | jit, no inlining: 18.4s |
| 03:47:37 | evan | jit, inlining: 15.2s |
| 03:47:53 | evan | making good progress! |
| 03:48:06 | evan | the runtime frame info in the inlined methods is giant |
| 03:48:11 | evan | need to figure out how to reduce it |
| 03:50:58 | slava | gangsta |
| 03:59:36 | slava | evan: does 1 + 1 get folded into a constant? |
| 04:20:36 | rue | evan: What is left in the frame? |
| 04:49:33 | yakischloba | seems commit by wycats earlier breaks my build http://pastie.org/private/uxpnyy8yztenjxjij2q |
| 05:10:52 | yakischloba | brixen: so this ""bin/mspec tag --list fails core" you gave me earlier, this shows all the things that need to be worked on? |
| 05:36:39 | evan | slava: yes, 1 + 1 is folded into 2 |
| 05:38:14 | evan | rue: a CallFrame and StackVariables |
| 05:38:21 | evan | LLVM already folds it away, when it can |
| 06:10:03 | brixen | yakischloba: that show rubyspec failures in the core specs |
| 06:10:10 | brixen | er shows* |
| 06:10:34 | brixen | evan: awesome on the generic inlining! |
| 06:10:57 | evan | yeah! still debugging it a bit |
| 06:13:34 | yakischloba | ok |
| 07:46:40 | brixen | wycats: what's the gcc version on snow leopard? |
| 07:46:53 | brixen | snl should be the abbr for snow leopard |
| 07:47:52 | wycats | brixen: 4.2.1 |
| 07:48:05 | brixen | hmm |
| 07:48:17 | brixen | your patch breaks for 4.0.1 |
| 07:48:27 | brixen | breaks the build for* rather |
| 07:49:56 | brixen | I think __GNUC_MINOR__ < 2 should be ok |
| 07:50:23 | brixen | leave the PL part off |
| 07:50:38 | brixen | wycats: could you try that |
| 07:50:40 | brixen | ? |
| 07:51:01 | brixen | IOW #if (__GNUC__ <= 4 && __GNUC_MINOR__ < 2) |
| 07:56:00 | wycats | brixen: /me checks |
| 07:56:08 | wycats | brixen: I followed evan's instructions |
| 07:56:13 | wycats | do I rake clean? |
| 07:56:16 | wycats | rake distclean? |
| 07:56:27 | brixen | um.. |
| 07:56:35 | brixen | just touch vm/primitives.cpp |
| 07:56:38 | brixen | and rake build |
| 07:56:39 | wycats | ah |
| 07:56:40 | wycats | cool |
| 07:57:52 | wycats | checks |
| 07:59:24 | dbussink | brixen: it's almost the same gcc as the 4.2.1 that is provided on leopard |
| 07:59:38 | wycats | it seems to have worked |
| 07:59:40 | dbussink | brixen: they just switched the default on snow leopard, it also still has 4.0.1 |
| 07:59:56 | brixen | dbussink: cool |
| 08:00:05 | brixen | wycats: could you push that, please |
| 08:01:27 | dbussink | brixen: evan could also reproduce that issue on show leopard with gcc 4.2 on leopard, so that makes life a bit easier |
| 08:02:09 | brixen | dbussink: you mean the stack issue? |
| 08:02:20 | dbussink | brixen: yeah, with the rotate instruction |
| 08:02:34 | brixen | I thought he fixed that? |
| 08:02:34 | dbussink | brixen: that gcc 4.2.1 probably wrongly optimized |
| 08:02:48 | dbussink | brixen: yeah, by using 4.2 on leopard, the issue was the same on snow leopard |
| 08:02:54 | brixen | ok |
| 08:03:17 | brixen | this is just about tr1/unordered_map |
| 08:03:20 | brixen | and version #s |
| 08:03:54 | wycats | brixen: yep |
| 08:04:07 | brixen | if someone is using 4.2.0 and it doesn't have a default hash, we'll revisit the guard |
| 08:04:10 | brixen | wycats: thanks |
| 08:04:18 | dbussink | i wonder if it shouldn't just be GNUC_MINOR < 2, dunno if 4.2.0 is still commonly used / etc |
| 08:04:20 | dbussink | brixen: hehe :) |
| 08:04:34 | brixen | dbussink: yeah, that's what wycats just checked |
| 08:04:43 | brixen | dbussink: great minds :) |
| 08:05:51 | dbussink | brixen: btw, that original stack issue evan fixed didn't appear to happen with other gcc 4.2 releases, so it was probably a bug they already fixed but apple didn't backport |
| 08:06:23 | brixen | interesting |
| 08:06:29 | wycats | weird... not pushing |
| 08:06:37 | wycats | it claims to be up to date but hasn't pushed |
| 08:06:49 | brixen | hmm |
| 08:07:34 | dbussink | wycats: i have the commit here |
| 08:07:56 | dbussink | wycats: be9e1e641 |
| 08:08:14 | brixen | yep, me too |
| 08:08:19 | wycats | yep |
| 08:08:23 | wycats | but it doesn't seem to be on github |
| 08:08:29 | wycats | http://github.com/evanphx/rubinius/commits/master |
| 08:08:38 | wycats | and it didn't pop in here |
| 08:08:41 | dbussink | wycats: i've seen the web interface being slow lately more often |
| 08:08:46 | wycats | weird |
| 08:08:46 | brixen | gh is probably just behind |
| 08:08:49 | wycats | seems good :) |
| 08:25:50 | dbussink | brixen: how can i do a ci run with the jit enabled? |
| 08:30:57 | brixen | dbussink: bin/mspec ci -T -Xjit.enabled |
| 08:31:04 | brixen | add -B full if you want the full CI |
| 08:31:16 | dbussink | brixen: ah ok, thnx |
| 08:31:22 | brixen | np |
| 08:37:04 | dbussink | brixen: hmm, i'm getting consistently longer runs for jit.enabled than without |
| 08:37:40 | dbussink | brixen: around 72 with jit enabled for full mspec, around 55 when disabled |
| 08:41:58 | brixen | dbussink: on linux or os x? |
| 08:42:07 | dbussink | brixen: os x leopard |
| 08:42:29 | brixen | odd |
| 11:16:04 | morris2 | hi. do you think phusion passenger might be able to run with rubinius? |
| 12:16:46 | morris1 | http://www.infoq.com/news/2008/01/rubinius-multi-vm should this still work? |
| 12:27:44 | morris1 | or how is Rubinius::VM.new to be used? |
| 12:46:00 | morris1 | because i get this: http://pastie.org/533069 |
| 12:46:11 | morris1 | it seems that machine_new is not defined in the vm source |
| 12:46:46 | morris1 | grep could find it ONLY in kernel/bootstrap/vm.rb |
| 12:47:03 | morris1 | so the error message makes sense |
| 12:48:54 | morris1 | same with join, get/send_message |
| 12:49:43 | morris1 | maybe it has been removed from rubinius... the news is early 2008 after all... but why? |
| 12:49:52 | morris1 | evan: can you help me out on this? |
| 13:13:25 | morris1 | anybody :/? |
| 15:10:10 | morris1 | can anybody give me info about the current state of development of multi-VMs in rubinius? |
| 15:10:18 | morris1 | or sub-VMs |
| 16:47:05 | rue | morris1: He is PDT, so probably just getting up now-ish. |
| 16:47:47 | morris1 | thought so |
| 16:47:59 | rue | morris1: And no, MVM does not currently work; I do not think there have been any attempts, even. |
| 16:48:21 | morris1 | so it once worked and was abandoned... or later? |
| 16:48:25 | morris1 | *for |
| 16:48:56 | rue | Not so much abandoned, just not "ported" over to the new infra |
| 16:49:16 | morris1 | hm okay |
| 16:49:18 | rue | There is a fairly significant amount of rework needed from the earlier scheme |
| 16:49:19 | morris1 | thanks! |
| 16:49:23 | rue | Sure |
| 16:49:29 | rue | Did you have a particular use case? |
| 16:50:07 | rue | dbussink: Yes, the past month or so the interpreter has been distinctly faster |
| 16:50:48 | rue | dbussink: I think the most recent stuff may have changed that, I have not tried...the specs are just not a good fit for JIT |
| 16:50:57 | morris1 | rue: web app... different scripts... different "namespaces"... sandboxing... etc. |
| 16:51:05 | morris1 | i can go on for hours :D |
| 16:51:32 | morris1 | e.g. multiple merb apps in one rubinius/rack instance |
| 16:52:08 | morris1 | user written ruby code that doesnt modify the running environment |
| 16:52:19 | morris1 | without starting a new ruby/rbx instance of course |
| 16:53:33 | morris1 | i wouldn't necessarily need an own native thread, only the sandboxing and seperation of code spaces is important for me |
| 16:56:04 | morris1 | it seems that rubinius is closer to achieving this kind of thing than 1.9 with yarv is... plus the rubinius internals are WAY more accessible for other devs than 1.9's |
| 16:56:24 | rue | Yes, it is definitely easier to get around |
| 16:56:49 | rue | The MVM stuff we had did not really address sandboxing at all, it is sort of an orthogonal concern |
| 17:01:29 | morris1 | by sandboxing i essentially mean seperation of code spaces.. like this: http://pastie.org/533350 |
| 17:03:03 | rue | Mm, there are several approaches to that |
| 17:03:34 | morris1 | i couldnt find any that worked |
| 17:03:38 | rue | But, yes, a VM that maintains its own runtime is not affected |
| 17:04:40 | morris1 | can you give an example of an approach that could solve this? |
| 17:05:30 | rue | To me, sandboxing has distinctly the connotation of security concerns, but it can be used more widely to indicate independent execution units with possibly limited access to the outside world |
| 17:05:56 | rue | morris1: Currently in Ruby? You would have to hack around it |
| 17:06:08 | rue | Selector namespaces is one of the more common suggestions |
| 17:08:14 | morris1 | then sandboxing is quite the wrong word, i just picked it up from why's freaky sandbox which does the very thing i need... but it doesnt work for 1.9 so i cant use it |
| 17:09:09 | morris1 | i couldnt find a way to hack around that with only ruby... i mean, there's a lot of stuff that has to be secured |
| 17:09:17 | morris1 | classes, modules, methods, globals, constants |
| 17:09:39 | morris1 | and then hiding that properly is tedious, i suppose |
| 17:13:31 | morris1 | i mean it is probably tractable... since ruby provides all you need for full reflection |
| 17:14:06 | morris1 | but it's a massive hack and MVMs would take care of this quite nicely |
| 17:17:41 | rue | _why's sandbox does protect the process, too. |
| 17:19:39 | morris1 | yeah sure, sandbox is wrong in my case |
| 17:27:49 | morris1 | still that hack is going to be tough |
| 17:27:59 | morris1 | i'll try and report back |
| 17:28:52 | wycats | I'm getting a segfault when I try to run rails -h |
| 17:29:04 | wycats | http://gist.github.com/140210 |
| 17:30:10 | rue | wycats: I knew Rails was a memory hog... ;) |
| 17:30:41 | wycats | hehe |
| 17:32:13 | rue | That is 2**64 |
| 17:33:09 | rue | wycats: You are running 64-bit, I assume? |
| 17:36:08 | rue | What does GDB say, is that from libffi? |
| 17:39:55 | rue | Ah, `int system_size_` :/ |
| 18:07:39 | rue | Yeah, that fix from yesterday fails on my 4.2.1 |
| 18:08:02 | wycats | rue: I am |
| 18:08:08 | wycats | running 64 bit that is |
| 18:10:41 | rue | wycats: You able to hit it with GDB? Just set the malloc_error_break bp and get the backtrace |
| 18:11:31 | rue | The incorrect type for system_size_ in immix is suspicious, but it has to be overstepping if that is the case, so it could be from somewhere else too |
| 18:40:45 | wycats | rue: not really proficient in gdb :( |
| 19:13:33 | rue | wycats: Do `$ gdb bin/rbx`, then in the gdb shell: `b malloc_error_break`, then `r -S rails -h` |
| 19:14:10 | rue | When it tells you it has hit the breakpoint, typing `bt` will print out the backtrace |
| 19:40:14 | wycats | bin/rbx works |
| 19:40:19 | wycats | I think |
| 19:40:27 | wycats | it's bin/rbx -S rails -h |
| 19:40:34 | wycats | ah |
| 19:40:36 | wycats | I follow now |
| 19:40:55 | wycats | rue: still here? |
| 19:50:34 | rue | wycats: Yeah |
| 19:50:42 | rue | Fighting JS |
| 19:50:45 | wycats | ha |
| 19:50:56 | wycats | I got a breakpoint |
| 19:50:58 | rue | Yes, the r is to run the binary, with the supplied options |
| 19:51:10 | wycats | so now I got it |
| 19:51:11 | wycats | what now? |
| 19:51:13 | wycats | bt? |
| 19:51:33 | wycats | whoa it took a while to generate the bt |
| 19:52:15 | wycats | http://gist.github.com/140260 |
| 19:52:23 | wycats | rue: what js problem are you having |
| 19:52:28 | wycats | I know a thing or two about that :P |
| 19:53:03 | ddub | wycats: you know javascript? |
| 19:53:19 | ddub | :) |
| 19:54:02 | ddub | thats a lot of bytes |
| 19:54:48 | rue | wycats: Trying to see if I can run my dashboard widget |
| 19:54:54 | rue | On the web, that is |
| 19:55:26 | wycats | ddub: I do |
| 19:55:37 | wycats | ddub: I'm on the jQuery team :) |
| 19:58:45 | ddub | wycats: developing a love for ruby has helped me cope with my distaste for javascript |
| 19:59:12 | ddub | I worked at a company in a past life where we had a 30k+ line javascript IM client |
| 19:59:15 | wycats | ddub: I like JS :) |
| 19:59:22 | wycats | ddub: I would dislike that as well |
| 19:59:44 | wycats | that sounds bizarre at best |
| 19:59:44 | ddub | nothing like finding typos in code reviews, hidden by lack of coverage in the test suite :) |
| 20:00:12 | ddub | I didn't maintain it, just got brought in for reviews |
| 20:01:25 | ddub | jquery is quite smart though |
| 20:01:30 | ddub | I'm a fan |
| 20:02:19 | ddub | I have a tendancy to do backend work, so I haven't had a chance to really work on my JS skills |
| 20:02:56 | ddub | I made a google gadget about four months ago, and that was about it. And that was mighty painful, but I blame google for that |
| 20:03:05 | rue | Hehe |
| 20:03:07 | rue | // HM. This is pretty dangerous. Should we figure out how to |
| 20:03:32 | ddub | end of comment? |
| 20:04:03 | rue | I think the writer died |
| 20:04:14 | rue | wycats: Do you still have the GDB session up? |
| 20:06:09 | ddub | is wondering how to script a massive flac -> apple lossless conversion |
| 20:07:39 | rue | Applescript! |
| 20:08:26 | ddub | I think I would need some applescripty way to load the flac data |
| 20:09:50 | ddub | wycats: anything going on around your comments on 'gem' packaging/invokation? |
| 20:14:52 | wycats | rue: I do |
| 20:18:34 | rue | wycats: Try `f 14` (to move to the problematic frame), then `p a0` |
| 20:18:52 | rue | Could also try to p call_frame and msg |
| 20:20:25 | ddub | gah, I found a nice drag and drop tool to convert things, but for some reason when itunes imports the file it does not detect the metadata |
| 20:20:34 | ddub | (finder get info and quicktime both do) |
| 20:22:57 | wycats | $1 = <value temporarily unavailable, due to optimizations> |
| 20:23:12 | wycats | (gdb) p call_frame |
| 20:23:13 | wycats | $2 = (class rubinius::CallFrame *) 0x7fff5fbed350 |
| 20:23:17 | wycats | (gdb) msg |
| 20:23:24 | wycats | Undefined command: "msg". Try "help". |
| 20:24:29 | rue | wycats: `p *call_frame`, `p msg` |
| 20:26:50 | wycats | http://gist.github.com/140275 |
| 20:32:00 | rue | Wow, this was exceptionally stupid of me |
| 20:32:04 | radarek | http://pastie.org/533555 |
| 20:32:11 | radarek | I have many failing tests |
| 20:34:39 | wycats | rue: any further ideas? |
| 20:34:41 | rue | wycats: So p lets you inspect the C(++) side...you can try to get a bit deeper; first, `p __printbt__(call_frame)` |
| 20:35:18 | rue | wycats: You can try to poke at individual objects with __show__(), too, e.g. `p __show__(msg.name)` |
| 20:36:05 | rue | You might end up needing to cast etc., and looks like you have a "release" build so it will probably cut you short at that point |
| 20:36:36 | wycats | :( |
| 20:36:41 | wycats | noob wycats |
| 20:43:04 | rue | Heh |
| 20:43:47 | rue | See if you get anywhere; the problem often is that there is corrupt data in the stack somewhere, crashing GDB when it tries to execute whatever it is |
| 20:43:53 | rue | In this case, might get lucky |
| 20:45:32 | radarek | rue: if I build rubinius with llvm support then do I have to use some options to enable it or it is enabled all the time? |
| 20:45:45 | radarek | I remembed something like -Xjit... |
| 20:45:52 | radarek | *remember |
| 20:45:55 | wycats | rue: can you possibly reproduce? |
| 20:49:19 | rue | wycats: Nothing running 64 right now |
| 20:49:48 | rue | It should be solvable, got a decent gauge on the issue |
| 20:49:53 | rue | radarek: -Xjit.enabled |
| 20:50:06 | rue | And build with RBX_LLVM=1 still, yes |
| 20:50:17 | radarek | rue: ok, thank you |
| 20:50:43 | rue | radarek: Try -Xconfig.show (or .print maybe?) too |
| 20:50:57 | radarek | rue: it was quick ball: Segmentation fault |
| 20:50:58 | radarek | :) |
| 20:51:10 | rue | Ewp |
| 20:51:43 | wycats | rue: :( |
| 20:51:49 | wycats | I'll figure this out tomorrow |
| 20:52:48 | rue | wycats: Well, if it makes you feel better, I spent *entirely* too long on this: http://journal.kittensoft.org/decimaltime.html |
| 21:05:05 | evan | wycats: if you can |
| 21:05:12 | evan | go to a frame with the call_frame in it |
| 21:05:13 | evan | and do |
| 21:05:18 | evan | p call_frame->print_backtrace(state) |
| 21:05:28 | evan | i doubt that will give us much new info |
| 21:05:38 | evan | but it's worth a try |
| 21:07:52 | rue | evan: Think that failed (__printbt__) |
| 21:08:17 | evan | oh? hm. |
| 21:08:37 | evan | well, clearly 18billiontrillion bytes isn't the correct size |
| 21:08:54 | rue | No, it is very likely that it is not |
| 21:09:39 | evan | I see my // Hm. |
| 21:09:41 | rue | evan: Does fixing system_size_ to a size_t in util/immix.hpp cascade problems? |
| 21:09:42 | evan | has come to pass! |
| 21:10:07 | evan | no |
| 21:10:26 | rue | Okaydoke |
| 21:10:26 | evan | system_size_ is never more than about 4k |
| 21:10:37 | evan | thats just the number of bytes in a chunk |
| 21:10:55 | evan | er, not 4k |
| 21:11:02 | evan | 1M |
| 21:11:04 | evan | but still |
| 21:11:13 | evan | that size is there because it wiggles |
| 21:11:16 | rue | 32k + 1024^2 |
| 21:11:28 | evan | so that the start is properly aligned |
| 21:11:30 | evan | where do you get that? |
| 21:11:41 | evan | cChunkSize is 1024 * 1024 |
| 21:12:03 | rue | cBlockSize |
| 21:13:06 | rue | It _is_ unlikely to cause issues, but there are no explicit checks that it remains positive, I think |
| 21:13:16 | rue | I did not look terribly closely |
| 21:13:47 | evan | the largest it could be is cChunkSize + cBlockSize |
| 21:13:54 | evan | so it's fine |
| 21:14:24 | rue | Is it ever validly negative? |
| 21:14:42 | wycats | hey evan |
| 21:14:49 | wycats | I'm having a segfault running rails -h |
| 21:14:58 | wycats | from rue: http://gist.github.com/140275 |
| 21:15:16 | rue | 'S no point keeping it int if mmap wants a size_t and it should never go below 0 anyway |
| 21:15:18 | wycats | http://gist.github.com/140260 |
| 21:15:39 | rue | I can fixeroo, but I have to muster the motivation to figure out a good fix to this TR1 crap |
| 21:16:09 | evan | wycats: yes, i looked back |
| 21:16:11 | evan | i'm aware |
| 21:16:19 | evan | rue: how could it be negative? |
| 21:16:43 | wycats | evan: any thoughts? |
| 21:16:52 | wycats | I'm not good enough with gdb to investigate this myself :( |
| 21:16:53 | evan | changing to size_t simply means that a bug that would result in a negative number now results in a giant number |
| 21:16:56 | evan | both of which are wrong. |
| 21:17:30 | evan | rue: it's fine the way it is. |
| 21:17:32 | rue | wycats: If you still have GDB running where you left it, try `p __printbt__(call_frame)` |
| 21:17:34 | evan | thats not the source of this bug. |
| 21:17:44 | rue | evan: Obviously not |
| 21:18:02 | rue | evan: But my point, exactly, is that "how could it be negative?" -- why is it a signed type? |
| 21:18:35 | evan | because i didn't make it unsigned |
| 21:18:39 | evan | no other reason |
| 21:18:55 | evan | so sure, from the code communication perspective, it should be a size_t |
| 21:19:01 | evan | but it's got no barring on running code |
| 21:19:08 | evan | zilch |
| 21:19:24 | rue | That we foresee, no, nor this particular issue |
| 21:19:44 | evan | i can see 100% of the places it's set |
| 21:19:56 | evan | and 100% of them result in 1 of 2 values |
| 21:20:01 | evan | both are simple, positive values |
| 21:20:03 | rue | I merely asked because I cannot run to find out if changing it would cause other problems, since I had run into it looking for mmap usage. |
| 21:20:13 | evan | oh? |
| 21:20:19 | evan | you had an mmap issue? |
| 21:20:28 | evan | maybe i'm missing details on this |
| 21:20:46 | rue | wycats' original segfault is from the mmap for the thrillierbillier bytes |
| 21:21:04 | evan | right |
| 21:21:06 | rue | So I was looking at mmap usage 'til he got a bt |
| 21:21:10 | evan | but these are 2 entirely unrelated issues, yes? |
| 21:21:45 | rue | Yes. The only reason I asked is because there may have been some reason for it to be signed that I was overlooking |
| 21:22:04 | evan | nope |
| 21:22:11 | wycats | rue: when I did what you asked I got a lot of output |
| 21:22:14 | wycats | is that expected? |
| 21:22:14 | evan | lets put this on the back burner |
| 21:22:19 | evan | and see if we can assist wycats. |
| 21:22:29 | evan | wycats: yes |
| 21:22:32 | rue | wycats: Yep, pastie up |
| 21:22:33 | evan | wycats: we need the ruby backtrace |
| 21:22:35 | wycats | http://gist.github.com/140290 |
| 21:22:45 | wycats | there you go |
| 21:23:10 | wycats | evan: I don't mean to be a pain... just figure that if I'm getting a segfault it's not just me |
| 21:23:18 | wycats | I recloned and rebuilt from scratch last night |
| 21:23:59 | rue | It is 84.990 hours, so I am having tea |
| 21:24:06 | evan | yep. |
| 21:24:16 | evan | this is getting my mood down |
| 21:24:19 | evan | and it's a vacation day |
| 21:24:24 | evan | so i think i'm going to not work on it now |
| 21:24:27 | evan | wycats: i'll take a look later. |
| 21:24:36 | evan | it's likely a 64bit issue related to use iconv over FFI |
| 21:24:49 | rue | Haha. |
| 21:25:00 | rue | `module Failure; attr_reader :success` |
| 21:25:05 | wycats | evan: that's fine |
| 21:25:10 | wycats | I didn't mean to ruin your day |
| 21:25:16 | evan | you didn't |
| 21:25:28 | evan | debugging over IRC is just about the most frusterating activity in my life though |
| 21:25:30 | wycats | I just figured vacation was a good time to mess with rbx, exactly because of things like this ;) |
| 21:25:35 | wycats | evan: 100% |
| 21:25:35 | evan | and abby is her and trying to have a conversation |
| 21:25:38 | evan | it's not helping. |
| 21:25:45 | wycats | we need screen over IRC |
| 21:25:55 | wycats | you type something and it prints the output |
| 21:25:57 | evan | wycats: go back to working on 32bit darwin |
| 21:25:57 | wycats | ;) |
| 21:26:00 | evan | thats the known quantity |
| 21:26:18 | evan | or, you can try and fix using iconv |
| 21:26:32 | evan | the debugging process for this is |
| 21:26:39 | evan | 1) me read the code, tell you a thing to try |
| 21:26:41 | evan | 2) me wait |
| 21:26:45 | evan | 3) you try and say it doesn't work |
| 21:26:51 | evan | 4) we spend 10 minutes trying to get more info |
| 21:26:53 | evan | 5) repeat |
| 21:27:05 | evan | thats too hard on my patience right now. |
| 21:27:52 | rue | evan: Try hypnotism: http://journal.kittensoft.org/decimaltime.html |
| 21:28:09 | rue | (For extra fun, hold up a digital watch next to it.) |
| 21:28:15 | evan | how come it's not a daliclock |
| 21:28:35 | rue | Dali's so flaccid |
| 21:29:29 | wycats | evan: I don't even know if you can use 32 bit darwin on snow leopard |
| 21:30:14 | rue | wycats: /usr/bin/arch -i386 programz0or.exe |
| 21:35:42 | wycats | rue: so I compile with /usr/bin/arch? |
| 21:37:33 | rue | Mm, no, you would compile it universal or using the i386 arch |
| 21:39:22 | rue | Erm |
| 21:39:32 | rue | elsif "foo" != (Inflector.transliterate("föö") rescue nil) |
| 22:08:19 | ddub | hmm. 18 billion billion bytes |
| 22:08:24 | ddub | isn't that 2**64 ? |
| 22:10:55 | ddub | that size sure looks like a special value |
| 22:11:11 | ddub | 0xffffffff00000028 |
| 22:11:35 | ddub | (from wycats' bt earlier) |
| 22:27:43 | wycats | hmm |