Hi, overall MOE is awesome and the support here is great. I’ve read through several topics that have helped me port my existing apps from RoboVM to MOE and this is the first time that I’ve encountered something that couldn’t find the answer to online or figure out myself.
So I’ve ported my app and it runs great for the most part but I started getting random crashes that produced no crash log. A little googling led me to realize that there isn’t a crash log because the source of the crash is:
Mar 29 14:24:04 iPhone com.apple.xpc.launchd (UIKitApplication:com.xxxxxxx.xxxxxxxx[0xa5b9]) <Notice>: Service exited due to signal: Broken pipe: 13
And apparently that signal doesn’t generate a crash log in iOS. I found an apparent fix here https://forums.developer.apple.com/thread/52744 but that’s where the problem lies. My app is using both java.net and com.squareup.okhttp3 (3.4.1) from several background threads to do the networking. I think the okhttp3 networking is what’s experiencing the broken pipe. I’m not sure how these map onto native iOS classes or where I would even need to apply the SO_SIGNOPIPE option mentioned in the link.
Now I know the broken pipe is probably a server problem but I don’t have control of the servers I’m contacting, so I’d like to just be able to gracefully handle the broken pipe and start another connection without it crashing my app.
Any ideas on what the problem could be here? I’m pretty sure I didn’t have this problem with RoboVM, or at the very least it wasn’t as persistent as it is now with MOE. I can pretty much guarantee a broken pipe now within the first few mins of using my app, which didn’t happen previously.
So my main questions:
a) Is there any way to catch and handle the broken pipe without crashing the app? I’ve tried Foundation.NSSetUncaughtExceptionHandler for native and Thread.setDefaultUncaughtExceptionHandler for Java, but neither stopped it. I also tried without both of them, no luck.
b) Is there at least a way to apply the SO_NOSIGPIPE option so that I can get a useful crash report from these errors?
c) This is somewhat unrelated, but I’m not getting the nice console crash details like I did with RoboVM. I used to get something like
*** Terminating from blah blah exception for this reason:
but now it rarely spits out anything about native crashes to the console. Any way to get that back?