I noticed that there is a fixed item in 2022.03.07 release note:
IL2CPP: Avoid a semaphore link in the IL2CPP runtime that can occur during lock contention for multiple threads. (UUM-40104)
What is a “semaphore link” means in the above description?
Is that a kind of expression for “dead lock” or any other multiple thread status that I never heard.
The reason I need to know the specific meanings for this item is our project has a random ANR problem.
We need to know if this update gonna fix that ANR.
Or any specific information for UUM-40104 ?
Thanks for mentioning this. The word “link” should have been “leak” in the release notes. I made a typo when I wrote that release notes entry, sorry!
Unfortunately UUM-40104 is not a public bug report, so I can’t link to it on the issue tracker. The problem was related to a race condition in the libil2cpp runtime code that could allow OS semaphore objects to leak when many threads are contending for C# Monitors (usually the
lock statement). On most operating systems, this isn’t noticeable, but some have a limited number of semaphores per process. On those operating systems this bug was a problem.