GodotVR / godot_oculus_mobile

Godot Oculus mobile drivers (Oculus Go / Oculus Quest)
MIT License
170 stars 34 forks source link

Crash on launch when building with mono #57

Closed BenMcLean closed 5 years ago

BenMcLean commented 5 years ago

In Godot 3.2 Alpha 2, I can:

  1. Build regular android apps.
  2. Build and run the Oculus Mobile Plugin demo without issues.

In Godot 3.2 Mono Alpha 2, I can:

  1. Build regular android apps with C#
  2. Build the Oculus Mobile Plugin demo.

However, when I run the Oculus Mobile Plugin demo that was build on the Mono version, it crashes on launch.

I'd appreciate any help trying to track down the cause of this, but because I can build regular Android apps with C#, I think the problem is that there's some incompatibility between this plugin and C#.

I'm on Windows 10. I'd be happy to gather logs but I'm not sure how ... I mean I'm getting some logs but they don't seem to say anything about what's causing the crash, or even that there is a crash.

neikeq commented 5 years ago

I will have a look at this in a week. Can you copy the logcat log?

BenMcLean commented 5 years ago

OK, I figured out how to get the logs. Here's the crash log:

10-11 21:55:38.300 22625 22640 I godot   : Godot Engine v3.2.alpha2.mono.official - https://godotengine.org
10-11 21:55:38.324 22625 22640 I godot   : OpenGL ES 2.0 Renderer: Adreno (TM) 540
10-11 21:55:38.360 22625 22640 I godot   :
10-11 21:55:39.210 22625 22640 V GodotOVRMobile: Creating OVR Mobile session.
10-11 21:55:39.236 22625 22640 E godot   : **ERROR**: Mono: Core API hash mismatch.
10-11 21:55:39.236 22625 22640 E godot   :    At: modules/mono/mono_gd/gd_mono.cpp:436:_initialize_and_check_api_hashes() - Mono: Core API hash mismatch.
10-11 21:55:39.237 22625 22640 I godot   : Mono: Logfile is: /data/data/com.godot.game/files/mono/mono_logs/2019_10_11 21.55.39 (22625).txt

and here's the Godot log:

10-11 21:55:39.678 22706 22706 F DEBUG   :     x0   00000000000001c0  x1   0000007f73e142a4  x2   0000000000000000  x3   0000000000000047
10-11 21:55:39.678 22706 22706 F DEBUG   :     x4   00000000ffffffff  x5   0000007f97080400  x6   0000000080808080  x7   0000007f8b716ac8
10-11 21:55:39.678 22706 22706 F DEBUG   :     x8   00000000000001c0  x9   0000000000000018  x10  0000007f8e7c7450  x11  0000000000000003
10-11 21:55:39.678 22706 22706 F DEBUG   :     x12  0000007f8b716498  x13  0000007f9707fc80  x14  89aa04541b37693d  x15  ffffffffffffffff
10-11 21:55:39.678 22706 22706 F DEBUG   :     x16  0000007f7a255fc8  x17  0000007f970387bc  x18  0000000000000084  x19  00000000000001c0
10-11 21:55:39.678 22706 22706 F DEBUG   :     x20  0000000000000000  x21  0000007f73e0feb0  x22  0000000000000000  x23  0000000000000000
10-11 21:55:39.678 22706 22706 F DEBUG   :     x24  0000007f7413cf20  x25  0000000000000000  x26  0000007f8e7c74e8  x27  0000007f8e7c5a90
10-11 21:55:39.678 22706 22706 F DEBUG   :     x28  0000007f8e7c74e8  x29  0000007f8e7c5a00  x30  0000007f7a0414cc
10-11 21:55:39.678 22706 22706 F DEBUG   :     sp   0000007f8e7c5920  pc   0000007f970387c0  pstate 0000000000000000
10-11 21:55:39.680 22706 22706 F DEBUG   :
10-11 21:55:39.680 22706 22706 F DEBUG   : backtrace:
10-11 21:55:39.680 22706 22706 F DEBUG   :     #00 pc 00000000000767c0  /system/lib64/libc.so (pthread_mutex_lock+4)
10-11 21:55:39.680 22706 22706 F DEBUG   :     #01 pc 00000000001324c8  /data/app/com.godot.game-1/lib/arm64/libmonosgen-2.0.so
BenMcLean commented 5 years ago

I should point out that I do not think the "Mono Core API mismatch" issue is actually what's crashing it, because I get that same message when I build a non-Oculus C# Android "Hello world" app and yet it runs just fine.

BenMcLean commented 5 years ago

Please don't forget! :) I could really use some help. I could set up a screen share to get this solved if it would help :)

BenMcLean commented 5 years ago

It would still be nice to get this to work, but don't stress out about it.

I seem to be the only developer in the entire world who wants to use C# with Godot on the Oculus Quest. I'm not devoted enough to being a trailblazer to deal with that, so I'm switching to Unity.

If you come up with a solution, I'll try it out though and maybe switch back to Godot if I find everything just works, but I think porting the little I've done so far over to Unity is going to be easier than investigating this when I seem to be the only one even trying anything like this.

m4gr3d commented 5 years ago

@BenMcLean Have you opened an issue against godotengine with the mono label? Based on your description, the issue seems to be with the mono implementation since this is just a plugin like any other and thus shouldn't impact how the engine run.

The mono maintainers should be in a better position to provide assistance since most of the contributors for this plugin do not use or have experience with the mono codebase.

BenMcLean commented 5 years ago

Godot 3.2 Mono Alpha 3 fixes this problem.