Thanks for the report Nathaniel. Before I forget, the latest version of BridgeSupport is preview 3, not preview 2 http://www.macruby.org/files/  (small detail but you are not the first one to mention that).

Here is my understanding of the problem. The --bs flag includes in your app the bs files that found in your machine. (so if you have BSp2, these files will be included).

Once you deploy your app to another machine, you probably only embedded the MacRuby framework, therefore the machine has the old BS version that ships with Snow Leopard. At this point, the new BS file is loaded in the old BS and that's when the problem occurs.

In other words, the new BS files are not compatible with the old BS. That's quite a problem indeed. My guess is that Apple is planning on shipping the new BS in Lion. Updating the old BS via a system update would probably break some code relying on the old format. So I'm not really sure what the solution is.

Laurent, am I right? What are the solutions?

Thanks,

- Matt



On Fri, Apr 15, 2011 at 5:25 PM, Nathaniel Talbott <nathaniel@talbott.ws> wrote:
On Fri, Apr 15, 2011 at 11:58 AM, Nathaniel Talbott
<nathaniel@talbott.ws> wrote:

> I have a MacRuby app that's working great on my local box, but when I
> put it on another box it crashes hard. Here's the relevant thread
> crash info:

I have more data on this. If I remove the references in my app to
functions/constants that are only in the latest BridgeSupport
(preview2), the app *still* crashes on the box that has not had
BridgeSupport preview2 installed. The trace changes slightly, but note
that it's *not* related to the missing functions/constants:

 Exception Type:  EXC_CRASH (SIGABRT)
 Exception Codes: 0x0000000000000000, 0x0000000000000000
 Crashed Thread:  0  Dispatch queue: com.apple.main-thread

 Application Specific Information:
 __abort() called
 objc[1402]: garbage collection is ON

 Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
 0   libSystem.B.dylib                 0x00007fff85b8e5d6 __kill + 10
 1   libSystem.B.dylib                 0x00007fff85c2ec77 __abort + 103
 2   libSystem.B.dylib                 0x00007fff85c132d8
release_file_streams_for_task + 0
 3   libmacruby.1.9.2.dylib            0x00000001001120ce rb_pointer_new2 + 13086
 4   ???                               0x5f79617272615f73 0 + 6879637049958293363

HOWEVER, if I take the "--bs" switch off of macruby_deploy so that it
doesn't embed the BridgeSupport files, the app works fine on this
computer so long as the references to the preview2-only
functions/constants are still removed.

Further, if I add back in the references to the preview2-only
functions/constants, the app still errors, but it doesn't crash and it
gives good data on the error:

 4/15/11 8:23:15
PM      Elephant[2310]  /Users/ktalbott/Desktop/Elephant.app/Contents/Resources/rb_main.rb:18:in
`<main>': uninitialized constant Config::KFSEventStreamEventIdSinceNow
(NameError)

So it appears that there is a bug in the code that handles embedded
BridgeSupport files - any ideas on tracking it down?


--
Nathaniel Talbott
<:((><
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel