That leads me to believe that its more probable that you have a buffer overrun (or similar) problem.
any chance to unwind the stack to the origin? that might give you a path to follow but at this point I would try to find an emulator/device that has the problem and remote debug it.
The app store does not give the stack and I could never reproduce the issue anywhere...
The app stores tries unwinding to create a backtrace, but clearly it fails after the second function
First thing that comes to mind to check is the use of interfaces (uses is internally) may be mix up between interface var en class var?
Is with interfaces usually becomes fpc_intf_is
Maybe is operator should be protected with try except:
function fpc_do_is(aclass : tclass;aobject : tobject) : boolean;[public,alias: 'FPC_DO_IS']; compilerproc;
begin
try
fpc_do_is:=assigned(aobject) and assigned(aclass) and
aobject.inheritsfrom(aclass);
except on EAccessViolation do
Result := False;
end;
end;
Or perhaps try except is the problem.
There is a use of fpc_do_is in fpc_catches.
try
try
raise exception.Create('..');
except on e: Exception do begin
e.free;
raise;
end;
end;
except on e: Exception do begin
writeln('b');
end;
end;
gives exactly that backtrace (see attachment)
Amd the big problem are the ??, especially the one in the third row
GDB figures out that it should continue to fpc_catches, but the app store can't. It aborts on the first ??
How can you modify fpc_do_is/fpc_catches to not cause ?? in backtraces