Приложение для iOS было убито (выброшено за борт )из-за проблемы с памятью медиасервера (утечка? )во время потокового видео

Мы наблюдаем странный сбой, в котором кажется, что iOS отбрасывает наше приложение вместе с mediaserverd после получения предупреждения уровня памяти 2. Это происходит при потоковой передаче DRM-контента (, включая, помимо прочего, контент, зашифрованный PlayReady ), примерно через 7 -8 минут после начала воспроизведения -, даже если мы перезапустили устройство, и никакие другие приложения не работали в фоновом режиме. Однако это происходит не всегда, и иногда мы можем завершить один и тот же фрагмент контента (весь двухчасовой фильм )с многочисленными приложениями, интенсивно использующими память -в фоновом режиме, без каких-либо проблем.

Мы наблюдаем это на устройствах iPhone 3GS, 4 и 4S под управлением iOS 5.1 и 5.1.1, хотя, похоже, это наиболее заметно на 3GS. Приложение будет завершено либо с «ошибкой сегментации 11», либо с «сигналом 9». Ошибка сегментации 11 может относиться к плохому доступу к памяти или нехватке памяти, а сигнал 9 относится к завершению нехватки памяти.

Мы использовали как статический анализатор, так и инструменты для поиска и устранения любых утечек, и ничего тревожного в инструменте Leaks не обнаружено.

При анализе воспроизведения с помощью инструмента Memory Monitor мы видим резкое уменьшение доступной физической памяти, когда мы начинаем потоковую передачу, что в определенной степени ожидаемо. Когда приложение/ОС ведет себя нормально, другие приложения удаляются из фона, когда памяти становится слишком мало, но иногда доступная физическая память просто продолжает уменьшаться, пока ОС не убьет наше приложение. Журналы сбоев не создаются, хотя иногда мы получаем журналы нехватки памяти,как показано ниже:

Incident Identifier: 13839D5B-D280-40D8-8C67-6EE3D61394C3
CrashReporter Key:   d3746ff556543d6a94e067d82c8fb379a285f543
Hardware Model:      iPhone2,1
OS Version:          iPhone OS 5.1.1 (9B206)
Kernel Version:      Darwin Kernel Version 11.0.0: Sun Apr  8 21:50:49 PDT
2012; root:xnu-1878.11.10~1/RELEASE_ARM_S5L8920X
Date:                2012-06-28 14:09:56 -0400
Time since snapshot: 104 ms

Free pages:        712
Active pages:      1433
Inactive pages:    1012
Throttled pages:   49925
Purgeable pages:   0
Wired pages:       11870
Largest process:   SpringBoard

Processes
         Name                 UUID                    Count resident pages
         launchd <5fec01c378a030a8bd23062689abb07f>      79
securekeyvaultd. <78f602d3604c3bf487a27a288dec3bbb>     156
           MYAPP <285e46965a91381dad0661443c8be3eb>    4035 (jettisoned) (active)
     MobilePhone <8f3f3e982d9235acbff1e33881b0eb13>     749 (jettisoned)
    mediaserverd <f03b746f09293fd39a6079c135e7ed00>    3670 (jettisoned)
        networkd <80ba40030462385085b5b7e47601d48d>     145
            apsd <e7a29f2034083510b5439c0fb5de7ef1>     260
     SpringBoard <c74dc89dec1c3392b3f7ac891869644a>    4615 (active)
         notifyd <f6a9aa19d33c3962aad3a77571017958>     170
        BTServer <31e82dfa7ccd364fb8fcc650f6194790>     259
CommCenterClassi <041d4491826e3c6b911943eddf6aaac9>     421
      aggregated <a12fa71e6997362c83e0c23d8b4eb5b7>     329
         configd <ee72b01d85c33a24b3548fa40fbe519c>     324
   fairplayd.N88 <ecb9495b29543b35a1f2e6c2b432528c>     168
       fseventsd <914b28fa8f8a362fabcc47294380c81c>     164
            iapd <0a747292a113307abb17216274976be5>     284
         imagent <9c3a4f75d1303349a53fc6555ea25cd7>     412
       locationd <cf31b0cddd2d3791a2bfcd6033c99045>     493
   mDNSResponder <86ccd4633a6c3c7caf44f51ce4aca96d>     182
    mediaremoted <327f00bfc10b3820b4a74b9666b0c758>     208
       lockdownd <b06de06b9f6939d3afc607b968841ab9>     315
          powerd <133b7397f5603cf8bef209d4172d6c39>     143
         syslogd <7153b590e0353520a19b74a14654eaaa>      90
           wifid <3001cd0a61fe357d95f170247e5458f5>     285
  UserEventAgent <dc32e6824fd33bf189b266102751314f>     322
         launchd <5fec01c378a030a8bd23062689abb07f>     120

End

Согласно некоторым более старым вопросам, которые я видел здесь, кажется, что у mediaserver были серьезные проблемы с утечками памяти в предыдущих версиях iOS.

Может ли это быть связано с проблемой?

Как мы можем предотвратить это?

Будем очень признательны за любые идеи, теории, отзывы или подобные вопросы!

8
задан Kevin James Hunt 7 August 2012 в 17:42
поделиться