4

I am using Bitrise as a CI/CD on my iOS app. In the workflow there is a step to release the app via Fabric. When a crash happens the only think I can see in the Dashboard is many __hidden steps on the stack. I guess that this is because of some missing symbols but Fabric doesn't says that any symbol is missing. I tried to add them manually any way but I am still seeing the __hidden crashes. Any ideas of how can I fix this issue?

Here is an example of what I get. Fabric log

Matias Jurfest
  • 1,378
  • 16
  • 25

1 Answers1

2

Check out Apple's document describing hidden symbols. Look for the "Translating 'hidden' symbol names back to their original names" section.

The issue here isn't that Crashlytics is missing symbol information. It's that the symbol information they have literally tells them your symbols are named __hidden#xyz. This has resulted in obfuscation you are seeing here. As the Apple doc describes, it is possible to de-obfuscate these symbols, but I'm not sure if Crashlytics supports this. They have a little bit of info here.

My understanding is this happens when you opt to not share symbol information with Apple during the app submission process. If I'm right, once you do this, it is impossible to change until you release a new version of your app.

Update:

I've discovered an option in dsymutil that makes it possible to deobfuscate a dSYM in this situation.

--symbol-map=*bcsymbolmap*

This will modify the dSYM in place with deobfuscated symbols. Uploading that dSYM to Crashlytics should result in expected symbolication. However, due to caching, you will probably need to reach out to them first to make sure this change takes effect.

Mattie
  • 2,868
  • 2
  • 25
  • 40
  • I think the issue is more related to Bitrise because the archive is being made on it. There should be some configuration on the archive step that I am missing. Anyway I haven't find a solution yet – Matias Jurfest Mar 19 '19 at 08:55
  • From the documentation, it sounds like the solution is either a) make sure to share symbols with Apple or b) deobfuscate the crashes after the fact. Crashlytics does not support B as far as I know. So, you can either do it manually with the .bcsymbolmap file, or make sure to share symbols with Apple. – Mattie Mar 19 '19 at 12:24
  • ah ha! I just discovered that you can use the `dsymutil` command to deobfuscate dSYMs with the bcsymbolmap. This should allow Crashlytics to then symbolicate normally. Check out `man dsymutil` – Mattie Mar 19 '19 at 12:28