0

私は、数週間後に公開される製品の最適化/分析段階にいます。私のコードに由来しない (と私は信じています) いくつかのリークを見つけて驚いています。そのうちの 1 つは、iOS 5.1.1 に存在する strdup/malloc リークで、更新を待つ以外に何もできません。しかし、今日、私は新しいものを発見しました。現在、どこでどのように漏れているかを特定しようとしています. 楽器レポート:

     Bytes Used         # Leaks Symbol Name
     16 Bytes  100.0%   1       start
     16 Bytes  100.0%   1        main
     16 Bytes  100.0%   1         UIApplicationMain
     16 Bytes  100.0%   1          -[UIApplication _run]
     16 Bytes  100.0%   1           _UIAccessibilityInitialize
     16 Bytes  100.0%   1            -[UIApplication(UIKitApplicationAccessibility) _accessibilityInit]
     16 Bytes  100.0%   1             -[UIApplication(UIKitApplicationAccessibility) _updateAccessibilitySettingsLoader]
     16 Bytes  100.0%   1              _AXSAccessibilityEnabled
     16 Bytes  100.0%   1               _getBooleanPreference
     16 Bytes  100.0%   1                CPCopySharedResourcesPreferencesDomainForDomain
     16 Bytes  100.0%   1                 CPSharedResourcesDirectory
     16 Bytes  100.0%   1                  getpwuid
     16 Bytes  100.0%   1                   si_user_byuid
     16 Bytes  100.0%   1                    search_item_bynumber
     16 Bytes  100.0%   1                     si_user_byuid
     16 Bytes  100.0%   1                      _fsi_get_user
     16 Bytes  100.0%   1                       0x119048
     16 Bytes  100.0%   1                        0x1180e4
     16 Bytes  100.0%   1                         malloc

少し調べてみると、getpwuid は によってインポートされた unix/linux 関数であることがわかりました<pwd.h>。Instrumentsで をダブルクリックするsi_user_byuidと、「ソースなし」のサインが表示され、 をダブルクリックするgetpwuidと arm7 アセンブリが表示されます (これについては申し訳ありませんが、私はよく知りません)。

+0x0    push                           {r4, r5, r7, lr}
+0x2    add                            r7, sp, #8
+0x4    movw.w                         r5, #18506  ; 0x484a
+0x8    movt.w                         r5, #3265  ; 0xcc1
+0xc    mov                            r4, r0
+0xe    add                            r5, r15
+0x10   ldr                            r0, [r5]
+0x12   cbnz                           getpwuid
+0x14   movw.w                         r0, #47748  ; 0xba84
+0x18   movt.w                         r0, #1  ; 0x1
+0x1c   add                            r0, r15
+0x1e   bl.w                           getpwuid
+0x22   str                            r0, [r5]
+0x24   mov                            r1, r4
+0x26   bl.w                           getpwuid
+0x2a   mov                            r4, r0
+0x2c   movs                           r0, #201  ; 0xc9
+0x2e   mov                            r1, r4
+0x30   bl.w                           getpwuid
+0x34   movs                           r0, #0  ; 0x0
+0x36   cmp                            r4, #0  ; 0x0
+0x38   it                             ne
+0x3a   addne.w                        r0, r4, #28  ; 0x1c
+0x3e   pop                            {r4, r5, r7, pc}

そう:

  • 誰もこれを見たことがありますか?
  • 偽陽性でしょうか?
  • iOS 5.1.1 に限定されますか?
4

1 に答える 1

2

から始まる全体のソースは次のとおりですgetpwuid。ざっと見たところ、キャッシングが行われているようですので、よほどのリークでない限り、あまり気にする必要はありません。

于 2012-06-22T17:10:39.090 に答える