I’m having an issue where my game is crashing at random intervals of time. It seems that the application is receiving a kill signal from the OS and I cannot seem to understand why. I am hoping you can assist me with this.
The bug appears in Android builds. Win64 does not seem to have this problem at all.
Here are the logs seemingly related to the crash.
Any help is very appreciated.
Best Regards,
Tsuki
05-05 01:30:48.305 10882 10908 D UE4 : Signal 11 caught!
05-05 01:30:48.384 625 675 I WindowState: WIN DEATH: Window{4574f3d u0 com.Spooks.CollectionGame/com.epicgames.ue4.GameActivity}
05-05 01:30:48.384 625 675 W WindowManager: Force-removing child win Window{e8745d5 u0 SurfaceView} from container Window{4574f3d u0 com.Spooks.CollectionGame/com.epicgames.ue4.GameActivity}
05-05 01:30:48.421 625 3244 W WindowManager: Failed looking up window
05-05 01:30:48.421 625 3244 W WindowManager: java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@7b8fa00 does not exist
05-05 01:30:48.421 625 3244 W WindowManager: at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8736)
05-05 01:30:48.421 625 3244 W WindowManager: at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8727)
05-05 01:30:48.421 625 3244 W WindowManager: at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1209)
05-05 01:30:48.421 625 3244 W WindowManager: at android.os.BinderProxy.sendDeathNotice(Binder.java:558)
05-05 01:30:48.421 625 3244 I WindowState: WIN DEATH: null
05-05 01:30:48.459 206 206 I Zygote : Process 10882 exited due to signal (11)
05-05 01:30:48.508 625 6314 I ActivityManager: Process com.Spooks.CollectionGame (pid 10882) has died
05-05 01:30:48.509 625 6314 W ActivityManager: Force removing ActivityRecord{c891493 u0 com.Spooks.CollectionGame/com.epicgames.ue4.GameActivity t3203}: app died, no saved state
05-05 01:30:48.570 625 6314 I ActivityManager: Config changes=480 {1.0 234mcc?mnc en_GB ldltr sw600dp w960dp h528dp 320dpi lrg land finger -keyb/v/h -nav/h s.248}
Okay so signal 11 is Sigsegv, triggered from a segmentation fault (that is from accessing a nullptr ou dereferencing a deleted pointer).
Fortunately I’m not allocating any memory myself, and I can run this on win64 perfectly, so I can assume with a bit of certainty that I hit a bug with the engine… Any staff member mind a helping hand?
Signal 11 crash is typically a GPU driver issue. Please include the type of device you’re working on and whether or not you’ve experienced this crash with another project on the same device. I’m also going to need for you to provide me the logs from your mobile device.
Attach your phone to the computer
Go here: C:\android-sdk-windows\tools
Open up Monitor.bat
Launch the program and save the logs
If you cannot get Monitor.bat to open, please go to:
C:\android-sdk-windows\tools\lib\monitor-x86
Open up Monitor.exe
Follow the instructions above
Make sure that you highlight all of the logs, because they do not save unless they’re highlighted.
I kept working on it and using the monitor, it seems one of my TAssetPtr is deleted out of nowhere while being used, Not sure what I can do to keep it alive, and it only happens for Android. The TAssetPtr contains a UDataTable. Really what worries me here is that this does not happen for Windows. I’ll keep re-loading it temporarily but I hope this is a fixable problem…
My apologies for not finishing up here. I ended up finding the issue.
I was using TAssetPtr as a means to safely retrieve asset references from blueprint derived objects in C++, and I was using a single FStreamableManager to load these assets.
In FStreamableManager’s SimpleAsyncLoad and Synchronous it is stated that “a hard reference is made to the object”, and is only released when “Unload” is called. This is not true, as the object gets garbage collected unless I create a proper counted reference to the loaded object (via UPROPERTY or TShared type). As TAssetPtr is a weak reference I found the problem the hard way as it suddenly became a nullptr.
I hope I’m explaining this in an understandable way. You can set this as resolved I suppose.