Index

Show enters and exits. Hide enters and exits.

01:14:50DammI have a question, basically I grabbed the latest rubinus from git, do ./configure --enable-llvm and then I find Snow Leopard unusable
01:15:10DammI have the latest xcode, but basically suddenly /dev/null gets rm'd and suddenly zsh segfaults/etc
01:15:17Dammand llvm installed via brew...
01:15:40DammI admit I don't really want to try and find the exact error message again as it takes out my system completely and I have to reboot in order to open new shells
01:15:54Dammso dunno if i should just be quiet and not say anything because of that?
01:18:59DefilerHrm, really?
01:19:12DefilerI've built rbx numerous times on snow leopard with enable-llvm
01:19:31DefilerI use zsh as well, but not brew
01:21:28Dammreally... just installed llvm from brew, and the latest xcode before I started on this endevour
01:21:46Dammobviously the best thing I should do is bash -x ./configure --enable-llvm to try and capture the failure
01:22:02Dammthis is off of the git btw, not the tarball
01:22:22Dammnah configure is ruby woops heh
01:22:44Defilerwhich version of ruby do you have in your path?
01:22:55Damm1.8.7p72
01:23:05Defilerthat should work great
01:23:05Dammstock ruby
01:23:49Dammif you have a suggestion of a way to pull out more debug information to help, by all means i'm willing to debug this
01:24:11Defilerso it fails during the configure step?
01:24:15Dammright
01:24:29Defileryour brew-installed llvm, 64bit or 32bit?
01:24:31Dammit fails during configure and then spams out what looks to be some autoconf stuff and then /dev/null is gone
01:24:39Damm32
01:25:06Defilerremoving /dev/null is bad heh
01:25:06Dammnope it's 64 sorry
01:25:16DefilerOK, that might be involved
01:25:26DefilerI have ARCHFLAGS set to -arch x86_64
01:25:40Defileras well as CFLAGS
01:25:41Dammwell, stock ruby is universal
01:25:53Dammso it shouldn't be too much breakage I hope
01:26:03Defileryeah, I'm just wondering if rbx is trying to link against an llvm that is the wrong arch
01:26:09Dammbut yeah having it nuke /dev/null is weird, obviously shouldn't be configuring as root
01:26:19Defileryeah, don't do that heh
01:26:45Dammit's the only reason why i noticed the /dev/null, non luser shouldn't have had that happen
01:27:16Dammerr you know what i mean i hope
01:27:52Defileryeah
01:28:35Dammwell as non-root user it seems to not make the machine ball
01:28:41Dammor start screwing up automagically
01:28:46Dammso obviously that's a excellent start :)
01:29:08Dammi'll let it do 'rake' right now, and if there's any more issues i'll pipe in... but i'm still confused why root would do that
01:31:20Defilerrake -t will show verbose logs
03:19:40brixenDamm: did you say you are using homebrew but configuring rbx as root?
03:19:48brixenwhy oh why would you do that?
03:21:25brixenthinks making configure check for running as root and bailing would be a good idea
03:42:30Dammbrixen, it may not be the preferred method... but bailing if you run configure as root is not the answer
03:42:51Dammyou may not feel it is the brightest thing, but it shouldn't hose your system and require a reboot to open new terminals
03:44:19Dammgrabbed the latest tarball, configured and it's fine now... no data loss thankfully :)
03:44:52Dammbut i will definetly throw up a ticket though so that can be fixed, because having configure remove /dev/null
03:44:55Dammis bad
03:45:03Dammnot sure why/how but ..
03:48:20Dammbut i made an issue
05:53:06yakischlobabrixen: ping
17:10:29brixenmorning
17:10:34brixenI guess I go lost in the ether
17:10:39brixens/go/got/
17:41:35evanmorning boys and girls!
17:44:06brixenmorning
17:45:07evanbinary42: hey, I was just looking at your get_set.rb benchmark
17:45:16evanbinary42: could you update the ticket with any output you get via the segfault?
17:49:38binary42evan: I don't get anything interesting but I haven't run GDB with it yet.
17:49:43evanreally?
17:49:45evanyou should get something
17:49:51binary42I know dbussink was reproducing.
17:50:07evanthe problem is without output, it's hard to know what is being reproduced.
17:50:07binary42evan: Yeah. Conference just kept me busy. I'll be returning to that soon.
17:50:11evanare you on SL?
17:50:25binary42Yeah. LLVM + 10.6.
17:50:31evanooh
17:50:32evanok
17:50:35binary42Used the binary build you guys setup.
17:50:38evanopen up CrashReporterPref
17:50:49evanand set it to Developer
17:50:54binary42Ah.
17:50:56binary42Thanks.
17:50:56evanthen run rbx again and have it crash
17:51:03evanyou'll get a WONDERFUL crash output
17:51:10evanjust copy/paste that into a gist.
17:51:39binary42Where is that file?
17:52:48binary42Ah. nm
17:53:38binary42rebuilding. I'll post in a few.
17:56:55evancool, thanks.
18:02:15binary42evan: http://gist.github.com/241239
18:02:27evanadd that to the ticket please
18:02:30evanso I don't loose it
18:02:32binary42Doing.
18:03:13evanah! yes. the JIT compiler crashed.
18:03:28evanprobably some code shape confused it.
18:04:05evanhi joshpeek
18:04:08joshpeekhey
18:04:10evanthanks for giving me a couple minutes
18:04:21joshpeeksure thing
18:04:29evanthis subclassing issue is definitely something we've hit before
18:04:42evanI believe we hit it in the rails OrderedHash
18:04:49evanthat overrode Array#[] to do something else
18:05:11evansomething else being set an element
18:05:14evaner. #[]= was the method
18:05:15evananyways
18:05:18evanwe worked around that
18:05:31evanbut in the long term, people are going to have to be a little more aware of their core class subclasses
18:05:34joshpeekyeah, this is like a hardcore example of that :)
18:05:46evanif their subclasse doesn't call super at all
18:05:51evanand does something completely different
18:06:04evanthen there is good chance it won't work.
18:06:11evanthere are totally valid cases for this
18:06:41evanpeople are going to just have to know they need to be a little more faithful to the original method
18:06:42evanso anyway
18:06:43wycatson the other hand it gives people the power to modify #aref and have it cascade throughout the class
18:06:46wycatswhich is nice
18:06:46evanhow do you wanna handle this?
18:06:47joshpeekcomposition is much safer, i'm planning to rewrite it
18:06:56evanwycats: exactly.
18:07:15evanjoshpeek: ok. could you point me to the offending code?
18:07:19evani'd like to add a spec
18:07:27evanand to make an example out of it.
18:07:39evanso we can help people avoid this in the future.
18:07:43joshpeekhttp://github.com/josh/multimap/blob/master/lib/multimap.rb
18:07:55joshpeekdunno if rbx needs to change anything
18:08:00evanok, but what particularly?
18:08:07joshpeekdef self.[](*args)
18:08:12evanwhat code did you run against MultiMap that caused the issue
18:08:43evanwhat happened?
18:08:46evancould you gist the error?
18:08:51joshpeekstackoverflow :)
18:09:26evanaah
18:09:29joshpeeko, maybe it was a problem with replace
18:09:37evando you have the output?
18:09:43joshpeekit was some recursive problem
18:09:47evanbecause Hash.[] isn't recursive
18:09:50joshpeeksure, let me run the tests for it
18:09:53evanbut it does call Hash#[]
18:09:56evanthe instance method.
18:10:01evank, thanks.
18:11:05evaner. Hash#[]=
18:11:07evanis what it calls.
18:11:45evanjoshpeek: whats up with line 168?
18:12:19joshpeeki override each_pair to do something different
18:12:25evanwhy in a module_eval?
18:12:26joshpeekbut i keep it around as each_association
18:12:28evanwhy not just right there
18:12:33joshpeekrdoc hax :)
18:12:43evanhuh?
18:13:02evanthats... gross.
18:13:12joshpeekyou can't doc a aliased method
18:14:27wycatsjoshpeek: it's rdoc hax that significantly complicates understanding what's going on :(
18:14:30wycatsI hate it in Rails
18:15:53joshpeek(still working on that backtrace)
18:16:57evanno prob.
18:17:12joshpeekhttps://gist.github.com/a32b66e124e062319c1d
18:17:45wycatsevan: you gotta get that recursion backtrace support in ;)
18:17:55joshpeeklol
18:18:12evanwycats: it's in.
18:18:18evanjust not for mutial recursion
18:18:28wycatsthis looks like all the same line
18:18:29evanoh thats because rspec uses it's own output
18:18:37evanrspec doesn't use the rbx backtrace render
18:18:42evanthats why it's also the crappy MRI backtrace format
18:18:58wycats;)
18:20:27wycatsyugui: !
18:20:35evanwierd that it's recursion on that one line only...
18:20:55evanfeels like something is up with the backtrace...
18:21:10evanjoshpeek: could you run that not in a spec?
18:21:11joshpeeki'll run the test in rbx irb
18:21:18evanjust put the offending code in a script and call it
18:21:24evanthe backtrace should be easier to read
18:21:28yuguiwycats: Hi, JRubyConf and the dinner were good. Thank you. I'm at SFO airport.
18:21:34wycatsyugui: :)
18:22:09wycatsyugui: so much food!
18:23:04joshpeekevan: updated https://gist.github.com/a32b66e124e062319c1d
18:23:05evanjoshpeek: a script is better than irb.
18:23:40evanthere we go.
18:23:45evanthat makes a lot more sense
18:24:02evanwe can see that, yeah, #replace and .[] are recursing.
18:24:57joshpeekupdated w/ script version
18:25:21joshpeekyeah, my replace calls Hash[]
18:25:43evanright, and my Hash[] calls replace
18:25:45evanoops!
18:26:15evanthis class does feel like it should be a composition
18:26:17evanrather than a subclass
18:26:39joshpeekyeah, its pretty hacky, changes alot of hash behavior
18:27:20evanone way to get this working now is to alias the rbx replace to replace_internals
18:27:23evanand call that directly
18:27:29evanso that it won't recurse
18:27:36evanthats the technique we've used before
18:27:41evanit does make the code a little more robust.
18:28:40wycatsevan: it's basically treating Hash like something you have to monkey-patch instead of something that has sekrit internals
18:28:59evanit's == ?
18:28:59joshpeekrbx always calls "foo_internals" if it exists instead of "foo"?
18:29:06evanjoshpeek: no
18:29:12evanwe're not going to do it for every method
18:29:23evanwe do it as we need to only.
18:29:37joshpeeko
18:29:40joshpeeki don't want you to have to do that
18:29:44evanok
18:29:59evanbecause, as wycats said, rbx subclassing is much more powerful than MRI subclassing
18:30:05evanon buildin classes
18:30:24evanbecause we we don't hide any internal actions
18:30:35evanbut with great power comes great responsibility.
18:31:06joshpeekits weird that it works on jruby fine
18:31:15evannot really
18:31:24evanjruby doesn't call back into ruby code to perform these things
18:31:27evanit's all in java.
18:31:48joshpeekah
18:32:40evanbinary42: what other things do I need to have installed
18:32:44evanbinary42: to run this
18:32:48evangem wise
18:33:13joshpeekevan: thx, i'll get on rewriting that to just wrap hash instead.
18:33:14binary42evan: Only the code (I actually disable the gem and the other libraries when running) and memcached 1.4+
18:33:16joshpeeklater
18:33:20evanjoshpeek: no prob.
18:33:26evanthanks
18:33:40evanit says it's trying to load "memcached"
18:34:16binary42Yeah. In harness.rb just comment everything out except my loadpath hack and the require.
18:34:26binary42And the clear I guess too.
18:34:58evanok, says i can't connect now.
18:35:02evanso i need to have memcached running?
18:35:06binary42Yup.
18:35:08evank
18:35:12binary42Make sure it is 1.4+
18:35:36evank
18:35:42evanports seems to have 1.4.1
18:35:46binary42Good.
19:05:08dbussinkevan: btw, already added a safety check for issue 81
19:06:20dbussinkevan: so how was rubyconf this year?
19:06:28evangood!
19:06:48dbussinkthat's good to hear :)
19:06:53dbussinkpresentation was well received?
19:11:22evanyep!
19:12:20brixendbussink: it would be a strange day that a prez by evan was not well received :P
19:12:28dbussinkevan: i have a tricky question for you if you want :)
19:12:33evanbrixen: :) thanks.
19:12:34evandbussink: sup?
19:12:35brixenmaybe if he told you to all go use python or something ;)
19:12:36dbussinkbrixen: there's a first time for everything ;)
19:12:40brixenheh
19:12:50dbussinkevan: how's your c compiler / preprocessor fu?
19:13:07evanpretty good.
19:13:32dbussinkevan: i was looking for some low hanging fruit this weekend and was looking into dev_major / dev_minor etc.
19:13:51evanmm, ok.
19:13:57dbussinkthing is that if you compile it with gcc, major / minor are macro's and the #if defined(major) check works
19:14:13dbussinkbut if you compile with g++ they are inlined functions to prevent collisions
19:14:22dbussinkso the if defined check fails
19:15:18dbussinkso i looked into the configure step, but that again is compiled with gcc, not g++
19:15:36dbussinkand if i try to compile it with g++ it fails with invalid conversion from ‘__int32_t (*)(__uint32_t)’ to ‘void*’
19:15:46dbussinkso i was wondering if you or anyone else has a suggestion for solving this :)
19:15:58evan#if !defined(__cplusplus) && ...
19:16:22evanif they're inline functions
19:16:28evanthey should always be available
19:16:29evani'd think.
19:16:41dbussinkwell, dunno how cross platform they actually are
19:17:23evanme neither.
19:17:46evancheck how 1.8 does it
19:18:47dbussinkit uses #if defined and that works since it's just c, not c++ code
19:19:06evanwell
19:19:15evanone easy way to handle this is to do that
19:19:17evanmake a .c file
19:19:21evando whatever you need to do
19:19:27evanand have it provide 2 functions
19:19:34evanthat always provide major and minor functionality
19:19:37evanand call that from C++
19:19:56dbussinkis there an example of that that i could look at?
19:20:04evannot that I can think of
19:20:05evanno.
19:23:26dbussinkevan: could also add some stuff to vm/detection.hpp to define a custom header
19:23:40evani don't see how that helps
19:23:54dbussinkevan: well, it's actually available on most platforms
19:23:59dbussinkso just calling major() will work
19:24:08dbussinkwhat fails atm is the check to actually enable that code
19:24:23evanso just call it
19:24:29evanignore detecting.
19:26:38dbussinkit could break on some platforms i guess, but they're probably not tested / supported atm anyway
19:27:06evanright
19:27:09evanso don't bother.
19:28:18dbussinkbrixen: question about spec/core/vm/coerce_to_array_spec.rb:41, what does that line test actually?
19:29:06brixenum..
19:29:51dbussinkbrixen: since there is no #module on method
19:30:27dbussinkbrixen: sorry, line 43
19:30:45dbussinkbrixen: line 44 does pass if i comment 43 btw
19:30:57brixenthat spec is really old
19:31:07brixenrewrite it however it makes sense
19:31:44dbussinkwell, i think just line 43 has to go
19:32:00dbussinkit correctly coerces with to_a so that seems to make sense
19:32:27DefilerI would expect that code to just be a version of to_a that returns [5] or something
19:32:40Defilerand then an expectation that coerce(foo) == [5]
19:33:08DefilerOh.. kernel#to_a, right
19:33:08Defilerhuh
19:41:11DefilerThat just seems like a spec that should go, honestly
19:41:19DefilerThere's another spec showing that to_a gets called if it is defined
19:41:32Defilerand surely other specs cover what Kernel#to_a does
19:42:46brixenDefiler: I agree
19:42:48dbussinkbtw, Kernel.to_a => (irb):1: warning: default `to_a' will be obsolete
19:42:52brixenit should be covered in language
19:43:30evandbussink: yeah, screw that warning
19:43:35evanit's existing for 7+ years.
19:43:38brixenheh
19:43:43evanexisted
19:44:10dbussink1.9 has it removed though
19:44:50evanso when we get to 1.9, we'll remove it.
19:46:18dbussinkevan: what are the ideas on that actually?
19:46:27evanwhicH?
19:47:34dbussinkon how to handle 1.9 in the future
19:47:38brixendbussink: make a 1.9 branch
19:47:42brixenimport parser changes
19:47:56dbussinki wonder what 1.9.2 will do to the adoption rate of 1.9
19:47:58brixenmost of the core lib 1.9 methods exist now (from 1.8.7)
19:47:59evanyeah, seperate 1.9 branch.
19:48:27brixendbussink: 1.9.2 should increase the adoption rate dramatically
19:48:48brixenup to the existing 1.9.1, things have been in flux quite a bit
19:49:30dbussinkyeah, i know
19:50:00dbussink1.9.2 might be a target i'm going for if rubinius is not there yet when i want to leave mri 1.8 ;)
19:50:33DefilerI'm running 1.9 as my default ruby executable now
19:50:39Defilerpretty painless change, really
19:51:52dbussinkyeah, i need to upgrade some dependencies to be 1.9 compatible, so it won't be that big an issue
19:52:01dbussinkbut have to make some time for it basically
20:04:36dbussinkevan: did you fix the stat on an unlinked file thing?
20:04:45evannot yet, no.
20:04:52evani should, it's trivial.
20:05:02dbussinkevan: cause i have a spec + fix now too
20:05:09evanah ok
20:05:11evanplease commit it
20:05:57evanah, we already had File::Stat.from_fd
20:06:04evanwe just weren't using it
20:08:04dbussinkyeah, i changed it to using that
20:09:32evancool.
20:14:35boyscoutAdd CAPI spec for rb_big2str - 0215587 - Dirkjan Bussink
20:14:35boyscoutRemove spec that was failing and doesn't really belong there in the first place - 2017657 - Dirkjan Bussink
20:14:35boyscoutAdd spec for File#stat on an unlinked file - 52c06be - Dirkjan Bussink
20:14:35boyscoutSwitch to Stat.from_fd for fixing File#stat on an unlinked file - f328426 - Dirkjan Bussink
20:14:35boyscoutRemove conditional check for major / minor since that doesn't work for C++ - 36d6bcb - Dirkjan Bussink
20:14:58dbussinkboyscout is fast these days :)
20:15:29evan:)
20:16:53evandbussink: try and have tag changes be in their own commit
20:17:20boyscoutCI: 36d6bcb success. 3004 files, 11459 examples, 35585 expectations, 0 failures, 0 errors
20:18:43dbussinkevan: ok, np
20:21:20dbussinkok, another question
20:21:23dbussinkst_lookup(RHASH_TBL(opts), tmp, 0)
20:21:36dbussinkthat's an idiom that turnes up in quite a few c extensions
20:21:51dbussinkwhat's the prefered way for rubinius or should this work ok?
20:22:02evanyeah
20:22:03evani've seen that
20:22:07evanno
20:22:10evanthat won't work
20:22:13evanprobably never wil.
20:22:14evanwill.
20:22:23evanthey need to use rb_hash_lookup
20:22:31evanwhich is available on 1.8.7+
20:22:36evanuse the rbx compat.h
20:22:40evanto define rb_hash_lookup
20:22:50evanfor pre-1.8.7
20:23:22boyscoutA number of C-API fixes for nokogiri - 37e2d1f - Evan Phoenix
20:23:22boyscoutPass AsMethod#arity through to CompiledMethod - a601633 - Evan Phoenix
20:23:22boyscoutAdd C-API tests - 9776239 - Evan Phoenix
20:23:22boyscoutRemove String#encoding since it doesn't work yet - 98b5714 - Evan Phoenix
20:23:22boyscoutChange where gem stubs go, teach loader how to use them via -S - 73a353c - Evan Phoenix
20:23:44evandbussink: you're looking at json, I assume.
20:23:57dbussinkevan: that too yeah
20:24:06dbussinkevan: but i've found it in other places too
20:24:14evanpeople do that to bypass using Hash#default
20:24:16evanwhich i don't really get
20:24:27evanwhy does the Hash have a default if they don't want it?
20:24:29evananyways.
20:24:53dbussinkevan: i've seen some nasty string munging in json too...
20:25:36dbussinkevan: just look at fbuffer2rstring
20:25:46evani'm not in that code atm.
20:25:50evanjust saw it last week
20:26:40boyscoutCI: 73a353c success. 3004 files, 11460 examples, 35587 expectations, 0 failures, 0 errors
20:31:36dbussinkevan: any blocks for an rc1 release you want to resolve?
20:32:00evanwanna try and fix the crash bugs people submitted the last couple days
20:32:07evanthats what i'm on
20:32:13evanany low hanging fruit is good
20:32:23evanwe should use the vote system in issues
20:32:28evanto move issues up
20:32:33evani've started to do that
20:33:47evani'm going to grab some lunch
20:33:57evanthen I have to redo how the JIT walks instructions
20:33:58evanit's a mess
20:34:01evanand causing bugs.
20:34:25dbussinkevan: ah ok
20:34:45dbussinkevan: is there an easy way how i could debug issues during rdoc generation when gem installing something?
20:35:33evanwell
20:35:35evanthat crash is fixed.
20:35:39evanthere is now a bug with syck
20:35:45evannot resolving some subclass thing
20:35:48evani was going to take a look at today
20:35:51evanif you have time, go for it.
20:36:36dbussinki've seen that one too, also seeing a bad file descriptor issue
20:36:48dbussinkbut i wonder if there is an easy way to get a decent backtrace out of it
20:37:17evanpass --debug
20:37:19evanto gem install
20:37:24evanyou should get a backtrace
20:37:28evanok, lunch time.
20:38:31dbussinkevan: have a nice lunch!
20:38:50dbussinkevan: one last thing, do you know anything about video's from rubyconf?
20:38:55Defilerdbussink: in your ~/.gemrc, you can set: :verbose: really
20:39:13Defilerand :backtrace: true as well if you want even more
20:44:04brixendbussink: confreaks recorded the videos, so they'll be available eventually
20:45:04dbussinkbrixen: ok, cool :)
21:03:39boyscoutHandle File#stat on unlinked file in a block - 8e382e5 - Dirkjan Bussink
21:05:32boyscoutCI: 8e382e5 success. 3004 files, 11460 examples, 35587 expectations, 0 failures, 0 errors
22:30:35flavorjonesHey. Trying to get Nokogiri running under Rubinius. Anybody on want to help out?
22:31:20brixenevan was working on it, but I don't know the state of things atm
22:31:26brixenwhat's your issue?
22:31:36evanshould be working
22:31:39flavorjonesyeah, I was talking to evan about it at rc
22:31:41evanwell, partly
22:31:43flavorjonesevan - this is mike d
22:31:47evanoh mike!
22:31:54evani pushed my fixes
22:31:55flavorjonesi'm getting segfaults in the nokogiri test suite
22:32:05evanaaron needs to push his exception problem
22:32:09evanok
22:32:11flavorjoneswell, one segfault. :-\
22:32:12flavorjoneshe did
22:32:13evanopen a ticket about your segfaults.
22:32:24evanwith as much detail as you have.
22:32:30flavorjonesokey doke
22:34:23evanlet me know when you have it open
22:34:26evanso i can look at it.
22:34:47flavorjonesOK. wondering, actually, if it's related to some of the st.h compilation warnings I'm seeing
22:35:03flavorjonesi'll open a ticket tonight, hopefully with a nice self-contained repro
22:35:23evani saw the st.h ones , yeah
22:35:33evanthose didn't cause any problems here
22:35:35evanthough I need to fix that
22:36:03flavorjonesumkay! i'll ping you when I've got an isolated test case
22:36:15evansounds good
22:36:16evanthanks!