Search Issue Tracker

Fixed in 4.5.X

Votes

0

Found in

4.2.2f1

Issue ID

574149

Regression

No

Butterfly Demo causes Unity webplayer to hang in Firefox

Webplayer

-

From this thread (https://bugzilla.mozilla.org/show_bug.cgi?id=932678) on Mozilla's support site, via Unity support:

A particular Unity demos hangs Firefox on OS X 10.9. The problem seems
to be an unhandled Mono exception that puts Unity or Firefox's
plugin-container process into a bad state. This hang is 100%
reproducible.

Stacktrace:

Process 926 stopped
* thread #1: tid = 0x6e80, 0x144d6905 Mono`GC_mark_from + 1004, queue = 'com.apple.main-thread, stop reason = signal SIGSEGV
frame #0: 0x144d6905 Mono`GC_mark_from + 1004
Mono`GC_mark_from + 1004:
-> 0x144d6905: movl 4(%eax), %esi
0x144d6908: cmpl %esi, -172(%ebp)
0x144d690e: ja 0x144d691c ; GC_mark_from + 1027
0x144d6910: cmpl %esi, -176(%ebp)
(lldb) bt all
* thread #1: tid = 0x6e80, 0x144d6905 Mono`GC_mark_from + 1004, queue = 'com.apple.main-thread, stop reason = signal SIGSEGV
frame #0: 0x144d6905 Mono`GC_mark_from + 1004
frame #1: 0x144d796a Mono`GC_mark_some + 466
frame #2: 0x144cf6b6 Mono`GC_stopped_mark + 470
frame #3: 0x144cfa9a Mono`GC_try_to_collect_inner + 351
frame #4: 0x144cfe0b Mono`GC_try_to_collect + 136
frame #5: 0x144cfe62 Mono`GC_gcollect + 26

So to sum up, here's what's happening:

1) An access violation takes place at Mono:GC_mark_from + 1004 in Unity plugin code.

2) A SIGSEGV handler, Mono:mono_handle_native_sigsegv (in plugin code) handles the signal without either properly working around the error or letting the plugin process die.

3) The plugin process is no longer able to handle IPC messages. If/when the main process finds itself "expecting" one of these messages, it assumes the plugin process is hung and starts a timer.

4) Once the timer has expired, the main process kills the plugin process.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.