iOS Question App rejected, how to read the crash log right

Moosi

Member
Licensed User
Longtime User
Hi all,

apple has rejected my app, obviously i have no errors while debugging on real devices and external testers from TestFairy. But the app appears to crash on startup during the review. I tested with flightmode and bad connections and so on.
The good news, I still have the ipa with the dsym.zip and of course the crashlog from apple.

This is the beginning of the Log File.

B4X:
Incident Identifier: C801EE1A-74F5-4475-A8AE-D316BA1DFFB1
CrashReporter Key:   3b8673c03fc96d7dccb65cef7bb64096e01772c5
Hardware Model:      xxx
Process:             [295]
Path:                
Identifier:          
Version:             1.0.14 (1.0.14)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2016-04-15 09:58:39.39 -0700
Launch Time:         2016-04-15 09:58:35.35 -0700
OS Version:          iOS 9.3.1 (13E238)
Report Version:      105

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Filtered syslog:
None found

Last Exception Backtrace:
(0x181bcae38 0x18122ff80 0x181bcad80 0x100053900 0x100072e10 0x100039460 0x10003b2f4 0x100024848 0x181bd0ae0 0x181ac8548 0x100059f88 0x10005976c 0x100074258 0x186eb330c 0x186f010a0 0x100074320 0x186d43f6c 0x186d3cb08 0x186d0cf4c 0x186d0b528 0x181b81124 0x181b80bb8 0x181b7e8b8 0x181aa8d10 0x183390088 0x186d75f70 0x100009234 0x1816468b8)

Global Trace Buffer (reverse chronological seconds):
2.060524     CFNetwork                     0x00000001821ada44 TCP Conn 0x1566a4780 SSL Handshake DONE
2.089698     CFNetwork                     0x00000001821ad954 TCP Conn 0x1566a4780 starting SSL negotiation
2.089945     CFNetwork                     0x000000018224fda4 TCP Conn 0x1566a4780 complete. fd: 17, err: 0
2.090256     CFNetwork                     0x00000001822512d0 TCP Conn 0x1566a4780 event 1. err: 0
2.103093     CFNetwork                     0x00000001822513a8 TCP Conn 0x1566a4780 started
2.724264     CFNetwork                     0x000000018224fda4 TCP Conn 0x156531b40 complete. fd: 11, err: 0
2.726236     CFNetwork                     0x00000001822512d0 TCP Conn 0x156531b40 event 1. err: 0
3.306635     AppleJPEG                     0x000000018362a26c [0x157864a00] Created session



Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib            0x000000018176411c 0x181748000 + 114972
1   libsystem_pthread.dylib           0x0000000181830ef8 0x18182c000 + 20216
2   libsystem_c.dylib                 0x00000001816d5dac 0x181674000 + 400812
3   libc++abi.dylib                   0x00000001812093f4 0x181208000 + 5108
4   libc++abi.dylib                   0x0000000181225e98 0x181208000 + 122520
5   libobjc.A.dylib                   0x0000000181230248 0x181228000 + 33352
6   libc++abi.dylib                   0x0000000181222f44 0x181208000 + 110404
7   libc++abi.dylib                   0x0000000181222b10 0x181208000 + 109328
8   libobjc.A.dylib                   0x0000000181230120 0x181228000 + 33056
9   CoreFoundation                    0x0000000181aa8db8 0x181aa0000 + 36280
10  GraphicsServices                  0x0000000183390088 0x183384000 + 49288
11  UIKit                             0x0000000186d75f70 0x186cf8000 + 515952
12  Best Finish                       0x0000000100009234 0x100004000 + 21044
13  libdyld.dylib                     0x00000001816468b8 0x181644000 + 10424

Thread 1 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0   libsystem_kernel.dylib            0x00000001817654d8 0x181748000 + 120024
1   libdispatch.dylib                 0x00000001816287d8 0x181614000 + 83928
2   libdispatch.dylib                 0x0000000181617648 0x181614000 + 13896


As far as I have understood the log, the "EXC_CRASH (SIGABRT)" says there is something like a NULL-Pointer Execption like an not initialized object or so.

Fortunately I have a mac and so I tried to symbolicate the Logfile using Xcode:

B4X:
xcrun atos -o ~/Desktop/CrashLog/Best\ Finish.app.dSYM/Contents/Resources/DWARF/Best\ Finish -arch arm64 -l 0x100004000 -f ~/Desktop/c.crash > ~/Desktop/symbolicated.crash

Question: Is the loading Adress "0x100004000" really the right one?

B4X:
12  Best Finish                       0x0000000100009234 0x100004000 + 21044

After symbolication I got this File where this part looks quite interesting to me:

B4X:
Exception
Backtrace:
(0x181bcae38
0x18122ff80
0x181bcad80
-[B4IObjectWrapper object] (in Best Finish) + 152
-[B4IImageViewWrapper setBitmap:] (in Best Finish) + 116
-[b4i_szenario _settranslation:] (in Best Finish) (b4i_szenario.m:858)
-[b4i_szenario _start] (in Best Finish) (b4i_szenario.m:968)
-[b4i_main _page1_touch:::] (in Best Finish) (b4i_main.m:512)
0x181bd0ae0
0x181ac8548
+[B4I runDynamicMethod:method:throwErrorIfMissing:args:] (in Best Finish) + 1824
-[B4I raiseEvent:event:params:] (in Best Finish) + 480
-[B4IPanelView touchesEnded:withEvent:] (in Best Finish) + 708
0x186eb330c
0x186f010a0
-[B4IPanelView touchesEnded:withEvent:] (in Best Finish) + 908
0x186d43f6c
0x186d3cb08
0x186d0cf4c
0x186d0b528
0x181b81124
0x181b80bb8
0x181b7e8b8
0x181aa8d10
0x183390088
0x186d75f70
main (in Best Finish) (main.m:16)


I was wondering if I did the symbolication right because if I use different start addresses I get diffrent results. So how do I know the right address?
What line would indicate the error?
If someone could point me into the right direction, I would be very happy.

Many thanks for reading.
 
Last edited:

Moosi

Member
Licensed User
Longtime User
Thanks a lot.
Can you explain why you are sure that it is the SetTranslation Call?
Is it because it´s in the middle of the five calls?

-[B4IObjectWrapper object] (in Best Finish) + 152
-[B4IImageViewWrapper setBitmap:] (in Best Finish) + 116

-[b4i_szenario _settranslation:] (in Best Finish) (b4i_szenario.m:858)
-[b4i_szenario _start] (in Best Finish) (b4i_szenario.m:968)
-[b4i_main _page1_touch:::] (in Best Finish) (b4i_main.m:512)
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
No. You need to read it from the bottom to the top.
Your code calls szenario_start from Page1_Touch sub.
Then szenario_start calls SetTranslation.
Then there is a call to the setter of ImageView.Bitmap. It throws an error when it tries to fetch the native bitmap from the bitmap object. This means that it was not initialized.
 
Upvote 0

Moosi

Member
Licensed User
Longtime User
Ahhh, that makes sense. Thanks for the explanation :)

I am pretty sure I found the bad guy.
That is what I´m doing:
In SetTranslation I call:
B4X:
InitIcon('imageNameFromDataBase.jpg', BmpIcon1)

Where BmpIcon1 is: Private BmpIcon1 As Bitmap

B4X:
Sub InitIcon(FileName As String, Bmp As Bitmap )
    Dim ThePath As String
    Pfad = Main.ImgPath&"/"&Main.CountryCode&"/"
       
        If FileName <> Null Then   
            If File.Exists(ThePath, FileName) Then
                Bmp.Initialize(ThePath, FileName)
        End If
    Else
        Log("FileName is NULL")    
    End If

End Sub

It is working on my test devices, but not for apple.
Is it a bad style to do such things?
 
Upvote 0

Moosi

Member
Licensed User
Longtime User
Hmmm,...

later (in SetTranslation) I assign the Bitmap to the ImageView:

B4X:
ImgSolution1.Bitmap = BmpIcon1

That is where the crash comes from.

In the Sub InitIcon I do initialize the Bitmap, but it seems not to work.
I use the bitmap as parameter for the sup. Maybe it is a bad Idea to do so.:(
B4X:
Bmp.Initialize(ThePath, FileName)
 
Upvote 0

Moosi

Member
Licensed User
Longtime User
very true.
I will return instead of passing it and add an IsInitialized to make sure it will not crash.

thanks a lot Erel!
 
Upvote 0

Moosi

Member
Licensed User
Longtime User
Hey Erel,
I got positive feedback from apple today. The app is online.:)

Just wanted to say thank you for your help on my recent issue, but also for your effort in general in this forum.

I did this app as Android and iOS Version and I really have to say it was incredible easy to develop for both platforms with B4A and B4I.
I love this Tools:cool:

thanks again
Andreas
 
Upvote 0
Top