Show enters and exits. Hide enters and exits.
| 00:55:01 | rue | dbussink: Hi-Fi |
| 02:46:29 | brixen | hm bin/rbx -e 'p Object.send(:initialize_copy, String)' |
| 02:46:31 | brixen | fun |
| 06:51:36 | evan | hm, i guess macruby doesn't support SystemStackError |
| 06:53:36 | brixen | I wonder why |
| 06:54:03 | evan | although |
| 06:54:05 | slava | i evan |
| 06:54:09 | slava | hi* |
| 06:54:13 | evan | the crashreport is sweet. |
| 06:54:16 | slava | how and when do you reset PICs? |
| 06:54:55 | evan | it's pretty coarse atm |
| 06:55:05 | evan | right now, whenever a method is defined |
| 06:55:14 | evan | all PICs for a method of that name are reset |
| 06:56:04 | evan | that what ya mean? |
| 06:56:39 | evan | slava: you don't detect a stack depth error, do ya? |
| 07:17:40 | slava | evan: call stack? |
| 07:20:11 | evan | yes. |
| 07:20:35 | slava | yeah it just segfaults if you recurse too deep |
| 07:20:54 | slava | however, I've almost never seen this |
| 07:21:22 | slava | usually you blow the retain stack first |
| 07:21:32 | slava | which has a guard page |
| 07:21:44 | evan | aaaaah |
| 07:21:46 | evan | ok |
| 07:21:49 | slava | I plan on doing better green threads soon, which will have their own call stack each |
| 07:21:52 | evan | how do you implement that? |
| 07:21:54 | slava | instead of copying the stack in and out using continuations |
| 07:22:03 | evan | i got fibers working this weekend |
| 07:22:07 | slava | when I do this, I'll be able to put guard pages on the green thread callstacks too |
| 07:22:10 | evan | going to push tomorrow |
| 07:22:21 | slava | so if it blows the call stack it will give a nice error message |
| 07:22:32 | evan | how is the retain stack guard implemented? |
| 07:23:04 | slava | the retain and data stacks ar eaallocated by a routine that mmaps some memory, then calls mprotect on the first and last page |
| 07:23:33 | evan | sure |
| 07:23:55 | evan | but do you then define a SIGSEGV handler to try and detect what happened? |
| 07:24:05 | slava | yes |
| 07:24:17 | slava | http://gitweb.factorcode.org/gitweb.cgi?p=factor/.git;a=blob;f=vm/os-unix.cpp;hb=HEAD |
| 07:24:26 | slava | I call them 'segments' |
| 07:24:37 | slava | this file has both the segment constructor (which does the mprotect) and the signal handler |
| 07:25:11 | slava | but on mac os, I don't use SIGSEGV, I use the mach native API to listen for protection faults |
| 07:25:24 | evan | ooh |
| 07:25:30 | slava | on windows I use SEH |
| 07:25:37 | slava | this is how I catch division by zero too |
| 07:25:40 | evan | you reset the uap |
| 07:25:41 | slava | you must handle that signal right? |
| 07:25:56 | evan | so that when the signal returns, it starts running the error handler code |
| 07:25:58 | evan | clever. |
| 07:26:11 | evan | i'd imagine that UAP_PROGRAM_COUNTER is a bitch to maintain |
| 07:27:00 | slava | http://paste.factorcode.org/paste?id=1262 |
| 07:27:25 | slava | yes. |
| 07:27:54 | evan | why oh why can't that be standard |
| 07:27:55 | evan | le sigh. |
| 07:27:56 | evan | so |
| 07:28:09 | evan | would you mind if i spun that code out into an external lib? |
| 07:28:19 | slava | not at all my friend |
| 07:28:28 | evan | wonderful! |
| 07:28:35 | slava | are you going to use my windows and mac os x code too? |
| 07:28:42 | slava | look at mach_signal.cpp |
| 07:28:44 | evan | i might! |
| 07:28:48 | evan | at the very least |
| 07:28:59 | slava | mach_signal.cpp makes my cry :( |
| 07:29:13 | evan | i'd like to put together a library of ucontext/setjmp things |
| 07:29:38 | slava | on windows, you define a callback with AddVectoredExceptionHandler() |
| 07:29:42 | slava | this is in os-windows-nt.cpp |
| 07:29:52 | evan | ok |
| 07:29:57 | slava | its almost like a signal handler; you get a PCONTEXT which is like a ucontext and you can change the pc and sp in it |
| 07:30:07 | slava | its win32/win64 specific too |
| 07:30:16 | slava | if I had this implemented as a library, wouldve saved so much time |
| 07:30:33 | evan | hm nice |
| 07:30:44 | evan | what i'll probably do is structure it a layered way |
| 07:30:51 | slava | there's libsigsegv but it sucks |
| 07:30:51 | slava | and its gpl |
| 07:31:04 | evan | one lib that tries to handle unifying the unix APIS |
| 07:31:22 | slava | and a C++ API on top with templates right? :) |
| 07:31:26 | evan | so there would be at least unix/macos/windows |
| 07:31:35 | evan | ha |
| 07:31:39 | slava | are you interested in ucontext only, or signal handlers too? |
| 07:31:45 | evan | no templates unless they really make sense |
| 07:31:55 | slava | what's the scope of your abstraction lib? |
| 07:32:19 | evan | well, the ability to reset a ucontext so that things can be handle after a signal handler is big. |
| 07:32:42 | slava | I'd use your library if you made it :) |
| 07:32:44 | evan | thats sort of the missing piece in a puzzle in my head |
| 07:33:00 | evan | i've looked at libsigsegv |
| 07:33:02 | evan | yikes |
| 07:33:04 | evan | AND GPL. |
| 07:33:19 | evan | i really need helpers |
| 07:33:23 | evan | so thats going to be the structure for now |
| 07:33:28 | evan | your UAP_* macros |
| 07:33:30 | slava | a portable way to respond to segfaults and arithmetic exceptions, by changing the pc and sp to your routine of choice |
| 07:33:33 | evan | a little icing |
| 07:33:34 | evan | to start. |
| 07:33:43 | evan | yeah |
| 07:33:48 | evan | that's definitely the goal |
| 07:33:52 | evan | i think we can easily get there. |
| 07:34:00 | evan | hell |
| 07:34:03 | evan | you're already there! |
| 07:34:12 | evan | we just need to library-ize it. |
| 07:38:45 | evan | slava: BSD license ok? |
| 07:40:23 | slava | evan: factor is BSD licensed |
| 07:40:30 | evan | ok, rad |
| 07:40:33 | evan | just wanted to be sure |
| 07:40:35 | slava | just to clairfy: http://factorcode.org/license.txt |
| 07:40:43 | evan | i'll probably dig in and abstract a little tomorrow |
| 07:41:00 | slava | awesome |
| 07:41:45 | evan | so, i'm assuming you've had good luck with the UAP_* macros |
| 07:41:58 | slava | yeah, they work reliably |
| 07:42:01 | evan | awesome. |
| 07:42:21 | slava | we have an extensive test suite that covers stack under/overflows, division by zero, and FP traps |
| 07:42:32 | evan | perfect. |
| 07:42:45 | evan | how do you do platform detection right now? |
| 07:43:00 | evan | for instance, the difference between the freebsd UAP_* and the linux versions |
| 07:43:07 | evan | i see there in different header files |
| 07:43:15 | slava | its pretty ghetto, http://gitweb.factorcode.org/gitweb.cgi?p=factor/.git;a=blob;f=vm/platform.hpp |
| 07:43:22 | slava | just one central include that has all the ifdefs in it |
| 07:43:23 | evan | aah |
| 07:43:24 | evan | i found it! |
| 07:43:26 | evan | wooo! |
| 07:43:34 | evan | cpp ghetto! |
| 07:43:35 | evan | love it. |
| 07:43:42 | evan | this is wonderful |
| 07:43:50 | evan | no autoconf! |
| 07:44:02 | slava | well, the makefile varies by platform too |
| 07:44:11 | slava | because there's OS-specific .cpp files |
| 07:44:21 | slava | but we have a shell script which sniffs out the default target |
| 07:44:28 | slava | so calling 'make' with no args works |
| 07:44:37 | slava | yeah, no autoconf! |
| 07:44:39 | evan | ok |
| 07:44:46 | evan | well, i really really really do not want to use autoconf. |
| 07:44:51 | evan | really. |
| 07:44:54 | slava | good |
| 07:45:04 | evan | i'm glad we agree. |
| 07:45:14 | slava | how paranoid are you about EINTR? |
| 07:45:32 | evan | not as much so since we switched to stackfull |
| 07:45:36 | evan | and native threads |
| 07:45:54 | evan | why? are you very? |
| 07:46:11 | slava | I'm not clear on what conditions can cause a system call to return EINTR |
| 07:46:15 | slava | I've seen it happen before |
| 07:46:24 | evan | ah |
| 07:46:31 | slava | on sockets, but also stdin |
| 07:46:32 | evan | signal is pretty much it. |
| 07:46:44 | evan | at least |
| 07:46:54 | evan | thats what i've always seen |
| 07:46:58 | slava | so in theory, any time you have a system call which is documented as failing with EINTR |
| 07:47:05 | slava | you have to wrap it in logic which re-tries it if needed? |
| 07:47:11 | evan | it depends on the call |
| 07:47:21 | evan | thats the option to sigaction that specifies restart |
| 07:47:22 | slava | otherwise, there's a 1 in a zillion chance that a signal will arrive and screw up your code? |
| 07:47:42 | evan | ok |
| 07:47:45 | evan | check the sigaction man page |
| 07:47:53 | evan | just below where it describes the SA_* macros |
| 07:47:58 | evan | it talks about EINTR |
| 07:49:19 | scoopr | on the plaform includes, I do something very similar, but I don't even vary makefiles usually, just wrap the .cpp in a #include "config.h" #ifdef PLATFORM_OF_CHOICE .. #endif .. ranlib bitches about empty .o files, but I still find it convenient =) |
| 07:49:33 | evan | as do I. |
| 07:49:39 | evan | find it convienent |
| 07:50:10 | slava | oh, nice |
| 07:50:37 | slava | so do you set SA_RESTART? |
| 07:50:45 | evan | yeah |
| 07:50:50 | evan | and you won't get EINTR |
| 07:51:04 | evan | sometimes you want EINTR |
| 07:51:08 | slava | we have a unix-system-call macro that we wrap everything in that restarts it if it returns EINTR |
| 07:51:11 | evan | for stuff like SIGVTALARM |
| 07:51:20 | slava | why? |
| 07:51:48 | evan | lets you specify a timeout of any kernel blocking call |
| 07:51:56 | evan | like select's timeout, but on anything you need. |
| 07:52:12 | slava | but if its inside of a C lib, and they don't handle EINTR properly, yu're fucked |
| 07:52:17 | evan | true enough. |
| 07:52:22 | evan | but it's still done. |
| 07:52:51 | slava | but other than that, there's no downside to enabling SA_RESTART? |
| 07:53:32 | slava | man, I was pretty proud that my unix non-blocking IO code was completelyEINTR safe and no-one else's was |
| 07:53:35 | slava | haha |
| 07:53:42 | slava | but now I see there's an easy solution that does not involve macro meta programming |
| 07:53:47 | evan | :) |
| 07:54:13 | evan | hey! that means you get to participate in the greatest activity a programmer can undertake |
| 07:54:15 | evan | DELETING CODE |
| 07:55:14 | evan | ok, well, i'm going to get to bed |
| 07:55:39 | slava | BAI |
| 07:55:39 | evan | i'm planning on redoing my stack overflow logic tomorrow with your UAP_* macros and our new library |
| 07:56:37 | slava | can I be a contributor to your library? :) |
| 07:56:46 | evan | of course! |
| 07:56:52 | evan | you're the #1 author. |
| 07:57:07 | slava | I'll let you think of a catchy name, though. |
| 07:57:15 | evan | i'm meerly the baker that puts some nice wrapping on it |
| 07:57:25 | evan | oh yay! |
| 07:57:27 | evan | naming rights! |
| 07:57:35 | evan | Evan Phoenix Arena! |
| 07:57:38 | evan | oh wait, this is a library. |
| 07:57:39 | evan | hm. |
| 07:57:41 | evan | i'll think on it. |
| 07:57:49 | evan | nite! :) |
| 07:57:59 | slava | :) |
| 08:06:21 | scoopr | how about libwigwag ;) http://en.wikipedia.org/wiki/Flag_signals |
| 08:40:20 | boyscout | Updated CI specs to RubySpec 10f861de. - 95ed29e - Brian Ford |
| 08:40:20 | boyscout | Ensure flip-flop operators don't cause unbalanced stack errors. - 1bfc55d - Brian Ford |
| 08:40:20 | boyscout | Updated CI tags for merged rubyspecs. - 8852f54 - Brian Ford |
| 08:53:04 | boyscout | CI: Commit 8852f54 failed. http://github.com/evanphx/rubinius/commit/8852f5428364075c99a2f2f8177fd788dd6cd7bd |
| 14:34:11 | cremes | seeing a weird SIGSEV when running the latest checkout: http://gist.github.com/292703 |
| 14:34:24 | cremes | osx 10.6.2 |
| 14:34:36 | cremes | i can/will create an issue on this if someone else can confirm it |
| 14:35:14 | cremes | what's odd is that it crashes during the initial mspec FULL run, but it's okay for my subsequent runs (bin/mspec ci -T -XJ) |
| 14:55:54 | kronos_vano | cremes, If you have steps to reproduce.... Why not? |
| 14:56:17 | cremes | kronos_vano: the steps to reproduce are to type "rake" :) |
| 14:56:38 | kronos_vano | hm... |
| 14:56:53 | cremes | i'll try a distclean and a rerun to see if it still occurs; maybe i have a bad file in my environment |
| 14:57:09 | kronos_vano | ruby -v == 1.8.7 ? |
| 15:15:30 | cremes | kronos_vano: yes, 1.8.7 |
| 15:15:55 | cremes | known issue with that ruby release & rubinius? |
| 15:17:49 | kronos_vano | hm |
| 15:18:12 | kronos_vano | I just now got it too |
| 15:23:43 | kronos_vano | cremes, unknown. |
| 15:24:02 | cremes | i'll open an issue |
| 16:42:12 | goyox86 | Hi people, i'm interested in helping somebody can tell me where? |
| 16:42:53 | goyox86 | I've aseked the same thing some days ago and some people told me that is a lot of work to be done , in the GC |
| 16:43:16 | goyox86 | other people suggested me fix some failing specs |
| 16:50:49 | kronos_vano | goyox86, http://github.com/evanphx/rubinius/issues |
| 16:57:22 | evan | goyox86: you can fix an failing specs |
| 16:57:24 | evan | run |
| 16:57:29 | evan | bin/mspec tag --list fails |
| 16:57:33 | evan | to see all the failing ones |
| 16:58:47 | goyox86 | ok #evan |
| 16:59:18 | goyox86 | evan there is some work can i do for the implementation itself |
| 16:59:20 | goyox86 | ? |
| 16:59:36 | evan | well, what do you want to work on? |
| 17:00:23 | goyox86 | well i have some knowledge in programming languages design |
| 17:00:35 | goyox86 | some people here told me about the GC |
| 17:01:02 | goyox86 | it's needs to be rewritten? |
| 17:02:06 | evan | no |
| 17:02:10 | evan | they should not have said that |
| 17:02:12 | evan | they were kidding. |
| 17:03:48 | goyox86 | ok evan, i took it i seriously an cheched out the code is a generational one :-) |
| 17:04:03 | evan | yeah, it's a generational collector |
| 17:04:48 | goyox86 | is it similar to the squeak's one? |
| 17:06:14 | evan | i haven't looked |
| 17:06:20 | evan | but i didn't think that squeaks was generational |
| 17:06:54 | BrianRice-work | it is. |
| 17:07:22 | BrianRice-work | otherwise it would be quite a dog, consing lots of temporary objects for its renderer and graphics toolkit |
| 17:07:31 | evan | true |
| 17:07:48 | evan | whats it use for the generations? |
| 17:07:54 | evan | semispace + marksweep? |
| 17:08:18 | BrianRice-work | quick overview: http://wiki.squeak.org/squeak/1469 |
| 17:08:20 | goyox86 | mmmmm i don't know exactly |
| 17:08:48 | BrianRice-work | basically mark-sweep-compact with a simple eden and a forwarding-pointer feature which is used for a few different things |
| 17:09:34 | BrianRice-work | so, no semispaces |
| 17:11:08 | evan | i know that squeak uses a wild and wacky object header |
| 17:12:11 | evan | BrianRice-work: hm, i wonder what write barrier it uses. |
| 17:12:38 | BrianRice-work | oh, I used to know offhand. slate's original GC was a port/cleanup of it. |
| 17:12:57 | evan | what does slate use for GC now? |
| 17:13:39 | BrianRice-work | something similar, but the details are different... looking to remind myself |
| 17:14:44 | BrianRice-work | yeah, we use card-marking, but are still a mark-sweep-compact 2-generation gc |
| 17:15:02 | BrianRice-work | http://github.com/briantrice/slate-language/blob/master/src/vm/gc.cpp |
| 17:16:57 | evan | so you lay out all of the objects in contigious memory? |
| 17:17:51 | evan | I see 2 mmaps |
| 17:17:59 | evan | so they're not fully contigious? |
| 17:19:10 | BrianRice-work | right, they're not |
| 17:19:40 | evan | doesn't look like card marking |
| 17:19:42 | BrianRice-work | mmap or malloc as a fallback |
| 17:20:01 | evan | I see what looks like a std::vector holding intergen objects |
| 17:20:04 | BrianRice-work | card pinning? maybe I'm using the wrong term ;) |
| 17:21:02 | evan | what code do ya mean in that file? |
| 17:21:48 | BrianRice-work | object-pinning. duh |
| 17:22:14 | BrianRice-work | honestly, I don't keep track of much detail in our VM :) |
| 17:22:41 | evan | :D |
| 17:22:49 | evan | object pinning isn't really write barrier related. |
| 17:23:26 | BrianRice-work | right, it has more to do with putting things on the c stack (or elsewhere like ffi) safely |
| 17:23:43 | evan | right, I see the Pinned<> template |
| 17:23:53 | evan | thats a trick I also use. |
| 17:25:41 | BrianRice-work | hm yeah, we *did* have card marking... until the SSA VM |
| 17:26:03 | BrianRice-work | probably just got lost in the shuffle. I recall that the gc was simplified for debugging purposes |
| 17:26:33 | evan | slava and I have been discussing how well a JVM style giant-mmap-at-beginning setup would work |
| 17:26:59 | evan | and then using the tricks to commit and uncommit pages |
| 17:27:17 | BrianRice-work | yeah I've heard about this technique. it's intriguing |
| 17:28:06 | evan | it's like also implementing your own virtual MMU |
| 17:28:11 | evan | in addition to a virtual CPU |
| 17:28:20 | BrianRice-work | I recall in particular a paper which involved a modified linux kernel which offered an api to query the state of pages, then the gc would avoid scanning pages which were on disk; managing to save huge amounts of overhead |
| 17:28:30 | evan | oh |
| 17:28:32 | evan | yeah |
| 17:28:33 | evan | that would help |
| 17:28:41 | evan | thats piggy backing off the REAL MMU |
| 17:28:54 | BrianRice-work | nods |
| 17:29:19 | BrianRice-work | alas, kernel hackers don't give two shits about this sort of thing |
| 17:29:38 | evan | yeah |
| 17:29:56 | BrianRice-work | maybe if the right guy were teased with the idea... hm, linus does live in PDX ... :) |
| 17:30:32 | BrianRice-work | pays attention to work again |
| 17:31:43 | brixen | evan: so, this random segv running the spec... |
| 17:31:58 | evan | yeah |
| 17:32:01 | evan | i haven't looked |
| 17:32:28 | brixen | ok |
| 17:39:43 | evan | i'm going to spend a little time on tickets today |
| 17:41:21 | brixen | just rebuilding in debug to see if I can get more info |
| 17:41:44 | brixen | from the bt, looks like it's in the GC |
| 17:41:57 | evan | yeah |
| 17:42:35 | brixen | evan: so, question on this "Mutex#lock waits if the lock is not available, even by the same thread" |
| 17:42:43 | brixen | it's failing on 1.8.7 and 1.9 |
| 17:42:43 | evan | yes. |
| 17:42:47 | brixen | passes on 1.8.6 |
| 17:42:52 | evan | rad! |
| 17:42:58 | evan | ok so |
| 17:43:07 | evan | i should have been clearer about whats going on |
| 17:43:17 | evan | the failure your getting is probably a ThreadError |
| 17:43:26 | evan | saying that you can't sleep the only thread? |
| 17:44:02 | brixen | um related |
| 17:44:12 | evan | how are they failing? |
| 17:44:16 | brixen | ThreadError: deadlock; recursive locking on 1.9 |
| 17:44:26 | brixen | ThreadError: thread 0x33b47c tried to join itself on 1.8.7 |
| 17:44:33 | evan | rad. |
| 17:44:37 | evan | *eyeroll* |
| 17:45:01 | evan | i don't know what to do then. |
| 17:45:29 | evan | since it appears that Mutex#lock changes behaviors |
| 17:46:05 | evan | hm |
| 17:46:09 | evan | it passes on 1.8.7 for me |
| 17:46:16 | evan | otherwise I wouldn't have checked it in. |
| 17:46:23 | brixen | what patchlevel? |
| 17:46:30 | evan | 72 |
| 17:46:37 | brixen | ok, try on latest stable |
| 17:46:39 | brixen | 248 |
| 17:46:42 | evan | ah |
| 17:46:44 | evan | well shit. |
| 17:47:06 | evan | i'm not sure how to spec whether or not Mutex#lock is recursive or not |
| 17:47:17 | brixen | hmm, me neither |
| 17:47:24 | evan | since that fact appears to change IN 1.8.7 |
| 17:47:31 | brixen | yeah |
| 17:48:39 | VVSiz | evan: and jruby does: ThreadError: Mutex relocking by same thread |
| 17:48:47 | evan | ok |
| 17:48:51 | evan | so no one agrees on what to do. |
| 17:49:31 | evan | aaaah |
| 17:49:38 | evan | some later version of 1.8.7 includes fastthread |
| 17:49:42 | evan | ie, Mutex is implemented in C |
| 17:50:48 | evan | well crap. |
| 17:50:49 | evan | no clue. |
| 17:50:55 | evan | i guess it's undefined behavior at this point. |
| 17:51:00 | brixen | seems so |
| 17:51:14 | brixen | I'm not understanding why it should be so hard though |
| 17:51:19 | evan | it "behaviors erraticly" do |
| 17:51:22 | evan | it's not hard |
| 17:51:23 | brixen | haha |
| 17:51:39 | brixen | so, perhaps a bug ticket for MRI? |
| 17:51:40 | evan | it's that it seems that people took issue with it not being recursive |
| 17:51:51 | evan | you'll just hear "we fixed the bug in 1.9" |
| 17:52:07 | evan | ie, i'm betting they consider it not detecting recursive locking a bug. |
| 17:52:23 | brixen | ok, well then that is explicit enough |
| 17:52:35 | evan | considering how it's been changed. |
| 17:52:43 | brixen | "you cannot lock a locked mutex on the same thread" ? |
| 17:52:49 | brixen | I'm not sure how to describe it |
| 17:52:52 | evan | use the word recursive |
| 17:52:59 | evan | since thats the typical language for this behavior of a mutex |
| 17:53:07 | evan | it "raises a ThreadError when used recursively" |
| 17:53:12 | brixen | k |
| 17:53:13 | VVSiz | evan: yeah |
| 17:53:34 | evan | brixen: so, what about older 1.8.7s? |
| 17:53:39 | evan | is there a patchlevel guard? |
| 17:53:54 | brixen | seems like this needs a ruby_bug guard |
| 17:54:01 | brixen | if they consider recursive locking a bug |
| 17:54:09 | evan | everything points to that fact. |
| 17:54:57 | brixen | k |
| 17:55:11 | brixen | thanks evan |
| 17:55:16 | evan | np |
| 17:56:18 | evan | yay |
| 17:56:30 | evan | i've eliminated the tick checker in ::interpreter |
| 17:56:40 | evan | and simplified the stack check |
| 17:56:58 | evan | it should be the same speed |
| 17:57:11 | evan | and we'll catch stack overruns better. |
| 17:57:36 | brixen | awesome |
| 17:57:45 | evan | btw |
| 17:57:52 | evan | for those that care |
| 17:57:53 | evan | you can do |
| 17:58:05 | evan | rake build:normal_flags <cpp file>.S |
| 17:58:18 | evan | to have it assembled to human readable assembly. |
| 17:58:35 | evan | thats what I do to check what the generated assembly is for things |
| 17:58:51 | brixen | ah yeah, I saw the rule in there |
| 17:59:27 | brixen | well, not getting the segv under gdb with a debug build :( |
| 17:59:42 | evan | i'm not surprised. |
| 18:00:03 | evan | i'm getting random String spec failures for some reason... |
| 18:00:20 | brixen | hrm |
| 18:00:22 | brixen | like? |
| 18:00:44 | brixen | ok, got it... USZ! |
| 18:01:33 | evan | weirdly |
| 18:01:35 | brixen | well, it's not the same as the CI bot got |
| 18:01:36 | evan | it's frozen errors. |
| 18:02:03 | evan | i'm poking at it. |
| 18:02:11 | evan | oh, did CI get a failure too? |
| 18:02:17 | evan | i thought you meant the issue |
| 18:02:17 | brixen | yeah, the segv |
| 18:02:22 | evan | there is an issue about one |
| 18:02:30 | brixen | looks |
| 18:02:49 | evan | hm |
| 18:02:58 | brixen | github sure is slow lately |
| 18:03:02 | evan | i've seen a few segfaults in the LookupTable mark code |
| 18:03:05 | evan | i wonder if something is up |
| 18:03:05 | brixen | at least for website and gist stuff |
| 18:03:33 | brixen | I'll add a bt to the ticket if mine is different |
| 18:04:06 | brixen | maybe |
| 18:04:18 | brixen | github fail |
| 18:05:27 | evan | yeah, i've got a GH fail too. |
| 18:24:21 | tarcieri | umm weird, so Facebook's thing really is an AOT "compiler" |
| 18:24:25 | tarcieri | for PHP |
| 18:24:28 | tarcieri | that translates it to C++ |
| 18:24:29 | tarcieri | wtf?! |
| 18:24:30 | tarcieri | heh |
| 18:26:07 | vhost- | tarcieri: are you talking about the php runtime rebuild thing? |
| 18:26:22 | tarcieri | yeah, except it's not |
| 18:26:27 | tarcieri | http://developers.facebook.com/news.php?story=358&blog=1 |
| 18:26:44 | tarcieri | it's not a compiler, it's a source code transformer! |
| 18:26:45 | tarcieri | lol |
| 18:26:48 | tarcieri | what? |
| 18:27:05 | evan | rad. |
| 18:27:08 | evan | source translation to c++. |
| 18:27:10 | evan | love it. |
| 18:28:18 | vhost- | it's really called hiphop? |
| 18:28:28 | tarcieri | wonder if it has a crazy type inference engine like Starkiller |
| 18:28:51 | tarcieri | probably not |
| 18:29:43 | tarcieri | I guess it does some basic type inferencing |
| 18:33:05 | evan | tarcieri: well, when they release the source we'll see. |
| 18:34:06 | tarcieri | yeah |
| 18:34:40 | evan | sounds like they just bail on the parts of PHP that are truely dynamic |
| 18:35:05 | tarcieri | heh |
| 18:36:54 | evan | ooh |
| 18:37:08 | evan | GH is slow because Hiphop is on GH. |
| 18:37:15 | evan | so all the facebookers are flooding GH. |
| 18:37:23 | evan | the price of success. |
| 18:37:26 | brixen | oh fun |
| 18:38:00 | tarcieri | heh |
| 18:38:04 | brixen | I blame the dedicated servers for not scaling well :) |
| 18:38:10 | evan | hah |
| 18:38:21 | tarcieri | lol |
| 18:41:43 | dbussink | everybody from kenai is moving there ;) |
| 18:42:20 | burkelibbey | both of them? >_> |
| 18:43:04 | burkelibbey | I guess it only seems small to me because I don't use java. |
| 18:44:13 | dbussink | burkelibbey_: you're ruining the joke :P |
| 18:44:28 | burkelibbey | heh |
| 18:44:56 | dbussink | is going to restart his new irc proxy for the last time hopefully |
| 18:47:37 | evan | pretty sure i've got the random spec failured sorted out. |
| 18:48:09 | evan | damn |
| 18:48:13 | evan | still there. |
| 19:01:49 | brixen | poor GH |
| 19:02:01 | brixen | now just getting 404s instead of mad horses with horns |
| 19:02:14 | evan | yeah |
| 19:02:26 | evan | the facebook thing about Hiphop had link to a github wiki |
| 19:02:42 | evan | maybe the wiki sucked and brought the whole site down. |
| 19:49:30 | brixen | evan: updated #181 with a gist of vm and ruby bt's |
| 19:49:38 | evan | k |
| 19:49:40 | brixen | I'll leave that process running if you want me to poke at anything |
| 19:49:42 | evan | i've got a crash here too |
| 19:49:45 | evan | in the GC |
| 19:49:47 | brixen | ok |
| 19:49:49 | evan | possibly the same one |
| 20:14:55 | evan | I think I have the crash figured out. |
| 20:15:21 | brixen | what is it? |
| 20:15:36 | evan | I think that ObjectSpace.find_object using the mark bits in the header is ending up confusing the GC later on |
| 20:15:50 | brixen | ahh |
| 20:16:33 | brixen | do we need a find_object bit in the header? |
| 20:17:01 | evan | perhaps |
| 20:17:06 | evan | i've got with the pragmatic approach for now |
| 20:17:17 | evan | using a std::map to keep track of if i've seen an object |
| 20:17:58 | brixen | makes sense |
| 20:18:08 | evan | it's a map allocated per call to find_object |
| 20:18:18 | evan | so it doesn't confuse anything |
| 20:19:29 | evan | it's got the side benefit that i can now implement find_object to look down a specific object graph |
| 20:19:38 | evan | not just all objects |
| 20:19:40 | evan | ack! |
| 20:19:50 | evan | still getting a random spec failure |
| 20:19:56 | evan | this time inside REXML.... |
| 20:20:37 | dbussink | evan: random spec failures looks like the issue i was seeing with the datamapper specs too |
| 20:20:57 | evan | maybe |
| 20:21:04 | evan | never seen it in running the ci specs though |
| 20:22:14 | evan | I did find some places where the methodcache wasn't being cleared |
| 20:22:21 | evan | i wonder if thats whats up with the DM specs |
| 20:26:14 | evan | ok, using the map in find_object seems to have solved the problem. |
| 20:27:58 | dbussink | evan: i'll just keep running them after each change that could potentially fix it ;) |
| 20:28:07 | dbussink | evan: jit method cache issue? |
| 20:29:00 | evan | perhaps |
| 20:31:41 | evan | GR |
| 20:31:47 | evan | still getting these random spec failures. |
| 20:31:50 | evan | wtf |
| 20:32:30 | brixen | is it the same spec randomly or random specs? |
| 20:33:35 | evan | it's frozen specs in String |
| 20:33:37 | evan | a lot |
| 20:33:42 | evan | but I saw a random one in REXML |
| 20:34:36 | brixen | drm |
| 20:34:40 | brixen | er hrm |
| 20:34:43 | evan | it might be JIT |
| 20:34:45 | evan | related. |
| 20:34:49 | evan | i'm going to poke a bit and get lunch. |
| 20:34:57 | brixen | k |
| 21:13:15 | dbussink | ezmobius: decided to put up the pressure a bit? ;) |
| 21:13:41 | ezmobius | ;) i already have ruby aliases to rbx on my own laptop and i am trying to use it for all my local dev |
| 21:33:46 | evan | this spec weirdness is ... weird. |
| 21:34:35 | evan | oooooooh |
| 21:34:36 | evan | hm. |
| 21:46:57 | dbussink | evan: that sounds like "i found it!", "ah, no, probably not" |
| 21:57:00 | evan | well, i thought maybe the JIT was reading or update the wrong header bits |
| 21:57:02 | evan | but that seems ok. |
| 22:08:25 | evan | hrmph |
| 22:08:29 | evan | i'm just going to push what I have |
| 22:36:23 | boyscout | Fix Socket#accept - b412c1b - Evan Phoenix |
| 22:36:23 | boyscout | Inliners changed name - f924362 - Evan Phoenix |
| 22:36:23 | boyscout | Minor cleanup - 9c761a0 - Evan Phoenix |
| 22:36:23 | boyscout | Check that something is a reference before using it - 3016598 - Evan Phoenix |
| 22:36:23 | boyscout | Use a std::map for marking rather than the header - 78cdc9d - Evan Phoenix |
| 22:36:24 | boyscout | Improve how the stack depth is checked - 4318087 - Evan Phoenix |
| 22:36:24 | boyscout | Update LLVM generated type info - 2b15601 - Evan Phoenix |
| 22:36:25 | boyscout | Add experimental Fiber support - a227ba1 - Evan Phoenix |
| 22:36:25 | boyscout | Improve arguments to Fiber.yield and Fiber#resume - 2d09dea - Evan Phoenix |
| 22:38:04 | evan | experimental fiber support has landed. |
| 22:38:07 | evan | you guys dared me |
| 22:38:55 | brixen | sweet! |
| 22:39:18 | evan | it only works on platforms that have makecontext(2) |
| 22:39:36 | kronos_vano | hm... Does ruby 1.8.7 have fibers? |
| 22:39:48 | evan | no |
| 22:40:04 | evan | but it has continuations |
| 22:40:09 | evan | and fibers are a path to continuations |
| 22:40:44 | kronos_vano | ok. So, is fibers in rubinius similar to fibers in 1.9 ? |
| 22:40:50 | evan | yeah |
| 22:41:00 | evan | if you wanna play with them |
| 22:41:26 | evan | here's how to use them: http://gist.github.com/293128 |
| 22:44:02 | brixen | heh FiberOne.com |
| 22:44:11 | brixen | Rubinius: now better for your digestion (tm) |
| 22:44:15 | evan | hehe |
| 22:44:27 | evan | if there is no makecontext(2) on a platform |
| 22:44:33 | evan | Fiber.new will raise an exception |
| 22:46:05 | boyscout | CI: rubinius: 2d09dea successful: 3041 files, 11834 examples, 36109 expectations, 0 failures, 0 errors |
| 22:46:40 | evan | well, thats nice. |
| 23:01:56 | kronos_vano | evan, Ah, about tickets. I rewrite Array#pack (~5x speed up) #173, make some small patches (#174, #177), find quick solution for #33 . Also alias method cause StackError exception. (#180) |
| 23:02:27 | kronos_vano | take a look if you have enought time |
| 23:02:37 | evan | i'm going to apply them today |
| 23:02:48 | evan | do you have all your pack changes in one patch? |
| 23:03:05 | evan | i think #33 is already solve |
| 23:03:16 | evan | i'm going to spend some time this afternoon going through tickets |
| 23:10:16 | kronos_vano | No, #33 is actual. I just test :). What about one patch: I'll do it now. |
| 23:11:49 | evan | huh? |
| 23:12:01 | evan | i'll check out #3 |
| 23:12:04 | evan | #33 |
| 23:12:07 | evan | i meant to fix that |
| 23:12:10 | evan | because I was just in that code |
| 23:12:18 | evan | if it's not fixed, something is up. |
| 23:12:46 | evan | ok, bbiab. |
| 23:30:31 | kronos_vano | evan, http://gist.github.com/293163 |