Notice (2018-05-24): bugzilla.xamarin.com is now in
Please join us on
Visual Studio Developer Community and in the
Mono organizations on
GitHub to continue tracking issues. Bugzilla will remain
available for reference in read-only mode. We will continue to work
on open Bugzilla bugs, copy them to the new locations
as needed for follow-up, and add the new items under Related
Our sincere thanks to everyone who has contributed on this bug
tracker over the years. Thanks also for your understanding as we
make these adjustments and improvements for the future.
Please create a new report on
Developer Community or GitHub with
your current version information, steps to reproduce, and relevant error
messages or log files if you are hitting an issue that looks similar to
this resolved bug and you do not yet see a matching new report.
So the problem is. I have an application. It compiles and deploys fine. When I try to run the application on a 64-bit devices, such as 5s, 6, 6s and so one, it works fine. But when I start the application on 32-bit device, such as iPhone 5, it crashes with the following message in iOS device log
error: * Assertion at ../../../../../mono/mono/mini/tramp-arm.c:1089, condition `((guint16*)target)  == 0xf8df' not met
I have investigated and found that application crashes whenever I even mention (i.e. get typeof(SomeType)) one of my classes that does not use any of Xamarin.IOS features, just a usual code that conforms with PCL profile.
It seems to me that the problems is in generic interfaces limitation that are worked-around by trampolines, but I’m not sure why.
I tried to rewrite the code with less of generic interfaces, but it didn’t seem to work.
The suspect class has the following inheritance hierarchy:
public class StompOverWebSocketsConnection : StompConnection<WebSocketConnectData, WebSocketDisconnectData>, IStompOverWebSocketsConnection
public class StompConnection<TUnderlyingConnectData, TUnderlyingDisconnectData> : IStompConnection<TUnderlyingConnectData, TUnderlyingDisconnectData>, IDisposable
public interface IStompConnection<TUnderlyingConnectData, TUnderlyingDisconnectData : IConnection<StompConnectData<TUnderlyingConnectData>, StompDisconnectData<TUnderlyingDisconnectData>>
public interface IStompOverWebSocketsConnection : IStompConnection<WebSocketConnectData, WebSocketDisconnectData>
public interface IConnection<in TConnectData, in TDisconnectData>
Do you have llvm enabled ? Can you check whenever disabling it fixes the problem ?
Yes, LLVM optimizations are enabled for our builds.
I will check if disabling it helps.
It seems that disabling LLVM optimizations does help to avoid this crash, but this is not an option for us.
Does keeping llvm enabled, but disabling the 'Use Thumb-2 instructions' option work ?
I will check this now. By the way, if I build only ARMv7 build, without ARMv7-64 it also seems to work.
By the way, I should have mentioned that this is on Xamarin version 126.96.36.199.
Yes, enabling llvm optimization but turning off thumb instruction set seems to be a workaround for this bug.
And it also seems that 9.6.* is not affected by this.
@Egor As per your last comment, it seems that the bug was fixed in the latests release, can you confirm if you are ok if we close the bug?
We have not received the requested information. If you are still experiencing this issue please provide all the requested information and re-open the bug report. Thanks!