The libmalloc provides self inspection facilities to detect corruption. Here is quote from man malloc.

...
ENVIRONMENT
     The following environment variables change the behavior of the allocation-related functions.
...
     MallocCheckHeapStart <s>         If set, specifies the number of allocations <s> to wait before begining periodic heap checks every <n> as specified by MallocCheckHeapEach.  If MallocCheckHeapStart is set but MallocCheckHeapEach is not
                                      specified, the default check repetition is 1000.

     MallocCheckHeapEach <n>          If set, run a consistency check on the heap every <n> operations.  MallocCheckHeapEach is only meaningful if MallocCheckHeapStart is also set.

     MallocCheckHeapSleep <t>         Sets the number of seconds to sleep (waiting for a debugger to attach) when MallocCheckHeapStart is set and a heap corruption is detected.  The default is 100 seconds.  Setting this to zero means not to
                                      sleep at all.  Setting this to a negative number means to sleep (for the positive number of seconds) only the very first time a heap corruption is detected.

     MallocCheckHeapAbort <b>         When MallocCheckHeapStart is set and this is set to a non-zero value, causes abort(3) to be called if a heap corruption is detected, instead of any sleeping.

...

When I enable the corruption checker via MallocCheckHeapStart=X (for my app it's 1000000), MallocCheckHeapEach=Y (for my app it's 1, but it could be 10, 100, or 1000 to lessen the slowdown of the app), MallocCheckHeapAbort=1, I consistently get corruption detected in a large app I'm working on within the first few minutes of the app launch. I've also asked a friend who works on a different large, legacy app - they report the same story - corruption is eventually detected.

The problem is, either libmalloc is providing false-positive detection or all Swift-based iOS apps are susceptible to subtle memory corruption bugs.

So, I kindly ask any developers who are developing for iOS: could you please check if your app can survive several minutes with libmalloc checks enabled without triggering the memory corruption check? I would recommend starting with these initial values:

MallocCheckHeapStart=100000
MallocCheckHeapEach=100
MallocCheckHeapAbort=1

If your app is running too slowly, you can adjust these values.

Thanks a lot in advance to anyone who has read this and tried it on their app!