Search Issue Tracker

Fixed in 5.5.0



Found in


Issue ID




[Android][iOS] Thread.MemoryBarrier() does not prevent instruction reordering with mono backend



Reproduction steps
1) Open attached project "MemoryBarrierRepro"
2) Build scene "testScene" for Android/iOS
3) Run on a device
4) Observe the log
--- You will see results of user's test in this format: "wrong value 42323173 ,correct: 42323177 ,previous: 42323176"

Comments (2)

  1. 1d8146644242011147550519dfc46b8b?d=mm


    Jul 07, 2016 22:43

    A similar bug has been filed for Mono 4. However in Mono 4 the test does not fail when Memory Barriers are used. The bug in that case is reproduced when a Volatile field is used instead of Memory Barrier.

    You can read the discussion here:

  2. 1d8146644242011147550519dfc46b8b?d=mm


    Jul 06, 2016 09:46

    Volatile fields have also a related problem in Unity' Mono run time for Android and iOS. They don't have acquire and release semantics:

    It's as if no memory fences are applied.

    The submitted test project fails if instead of using MemoryBarriers, a volatile field is used.

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.