1

iOS SDK を使用して S3 バケットに画像を投稿すると、断続的にクラッシュするバグがあります。

これらのクラッシュ バグは 2 つのエラーで構成されていますが、SDK の同じ領域で発生しています。

  1. セグセフ

    0 ofs staff 0x00282616 testflight_backtrace + 382
    1 ofs staff 0x00283264 TFSignalHandler + 264
    2 libsystem_c.dylib 0x3b656e92 _sigtramp + 42
    3 ofs staff 0x001c74a6 -S3Request configureURLRequest (S3Request.m:41)
    4 ofs staff 0x001b3c1a -S3AbstractPutRequest configureURLRequest (S3AbstractPutRequest.m:27)
    5 ofs staff 0x001c61ee -S3PutObjectRequest configureURLRequest (S3PutObjectRequest.m:62)
    6 ofs staff 0x001b2bfe -AmazonS3Client signS3Request: (AmazonS3Client.m:579)
    7 ofs staff 0x001b22aa -AmazonS3Client invoke: (AmazonS3Client.m:450)
    8 ofs staff 0x001b1298 -AmazonS3Client putObject: (AmazonS3Client.m:134)
    9 ofs staff 0x000d511e -OFSAmazonS3Client putObject: (OFSAmazonS3Client.m:41)
    10 ofs staff 0x00099b02 -OFSAWSFileUploader upload:forTask:toAWSBucket:accessKey:secret:error: (OFSAWSFileUploader.m:120)
    11 ofs staff 0x000d442c -OFSPhotoActivityUploadCell startUpload (OFSPhotoActivityUploadCell.m:104)
    12 UIKit 0x354260c4 -UIApplication sendAction:to:from:forEvent: + 72
    13 UIKit 0x35426076 -UIApplication sendAction:toTarget:fromSender:forEvent: + 30
    14 UIKit 0x35426054 -UIControl sendAction:to:forEvent: + 44
    15 UIKit 0x3542590a -UIControl(Internal) _sendActionsForEvents:withEvent: + 502
    16 UIKit 0x35425e00 -UIControl touchesEnded:withEvent: + 488
    17 UIKit 0x35344420 _UIGestureRecognizerUpdate + 5768
    18 CoreFoundation 0x335086cc __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20
    19 CoreFoundation 0x335069c0 __CFRunLoopDoObservers + 276
    20 CoreFoundation 0x33506d16 __CFRunLoopRun + 742
    21 CoreFoundation 0x33479ebc CFRunLoopRunSpecific + 356
    22 CoreFoundation 0x33479d48 CFRunLoopRunInMode + 104
    23 GraphicsServices 0x3703d2ea GSEventRunModal + 74
    24 UIKit 0x3538f300 UIApplicationMain + 1120
    25 ofs staff 0x00082e36 main (main.m:16)
    26 libdyld.dylib 0x3b60fb1f start + 3
    
  2. -__NSCFNumber requestFormat: 認識されないセレクターがインスタンス 0x1d43cfc0 に送信されました

    0 CoreFoundation 0x335332a3 __exceptionPreprocess + 163
    1 libobjc.A.dylib 0x3b1d897f objc_exception_throw + 31
    2 CoreFoundation 0x33536e07 -NSObject(NSObject) doesNotRecognizeSelector: + 171
    3 CoreFoundation 0x33535531 ___forwarding___ + 393
    4 CoreFoundation 0x3348cf68 _CF_forwarding_prep_0 + 24
    5 ofs staff 0x001f84a7 -S3Request configureURLRequest (S3Request.m:41)
    6 ofs staff 0x001e4c1b -S3AbstractPutRequest configureURLRequest (S3AbstractPutRequest.m:29)
    7 ofs staff 0x001f71ef -S3PutObjectRequest configureURLRequest (S3PutObjectRequest.m:64)
    8 ofs staff 0x001e3bff -AmazonS3Client signS3Request: (AmazonS3Client.m:579)
    9 ofs staff 0x001e32ab -AmazonS3Client invoke: (AmazonS3Client.m:450)
    10 ofs staff 0x001e2299 -AmazonS3Client putObject: (AmazonS3Client.m:134)
    11 ofs staff 0x0010611f -OFSAmazonS3Client putObject: (OFSAmazonS3Client.m:41)
    12 ofs staff 0x000cab03 -OFSAWSFileUploader upload:forTask:toAWSBucket:accessKey:secret:error: (OFSAWSFileUploader.m:120)
    13 ofs staff 0x0010542d -OFSPhotoActivityUploadCell startUpload (OFSPhotoActivityUploadCell.m:104)
    14 UIKit 0x354260c5 -UIApplication sendAction:to:from:forEvent: + 73
    15 UIKit 0x35426077 -UIApplication sendAction:toTarget:fromSender:forEvent: + 31
    16 UIKit 0x35426055 -UIControl sendAction:to:forEvent: + 45
    17 UIKit 0x3542590b -UIControl(Internal) _sendActionsForEvents:withEvent: + 503
    18 UIKit 0x35425e01 -UIControl touchesEnded:withEvent: + 489
    19 UIKit 0x35344421 _UIGestureRecognizerUpdate + 5769
    20 CoreFoundation 0x335086cd __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 21
    21 CoreFoundation 0x335069c1 __CFRunLoopDoObservers + 277
    22 CoreFoundation 0x33506d17 __CFRunLoopRun + 743
    23 CoreFoundation 0x33479ebd CFRunLoopRunSpecific + 357
    24 CoreFoundation 0x33479d49 CFRunLoopRunInMode + 105
    25 GraphicsServices 0x3703d2eb GSEventRunModal + 75
    26 UIKit 0x3538f301 UIApplicationMain + 1121
    27 ofs staff 0x000b3e37 main (main.m:16)
    28 libdyld.dylib 0x3b60fb20 start + 0
    

どちらのエラーも、S3Request.m の 41 行目に集中しています。

[self.urlRequest setValue:self.host forHTTPHeaderField:kHttpHdrHost];

これらのエラーは断続的であり、これまでのところ問題を正確に再現できていないため、アプリがクラッシュしたときの self.host の値がわかりません。

アップロードが成功すると、ホストの値は正しいバケット名になります。

これを再現するために、ホスト名を nil に設定し、不正なバケット名に設定して、wifi、3G、および接続なしでリクエストを実行しようとしましたが、これらの条件のいずれによっても、どちらの条件も発生しませんでした。

これらの問題の原因と、それらを修正するために私がしなければならないことを知っている人はいますか?

===更新===

私は最終的にそれを複製することができましたが、方法がわかりません。SIGSEVを取得しました。

これは、エラー時の S3Request オブジェクトでのリクエスト オブジェクトのステータスです。

(S3PutObjectRequest) S3PutObjectRequest = {
  S3AbstractPutRequest = {
    S3Request = {
      AmazonServiceRequest = {
        NSObject = {
          isa = OFSS3PutObjectRequest
        }
        httpMethod = 0x004bde08 @"GET"
        parameters = 0x00000000
        endpoint = 0x004c3a38 @"https://s3.amazonaws.com"
        userAgent = 0x1d427b60 @"aws-sdk-iOS/1.4.4 iPhone-OS/6.0.1 en_GB"
        credentials = 0x00000000
        urlRequest = 0x1d1165f0
        urlConnection = 0x1d04d680
        responseTimer = 0x00000000
        requestTag = 0x00000000
        serviceName = 0x00000000
        regionName = 0x00000000
        hostName = 0x00000000
        delegate = 0x1c567ba0
      }
      authorization = 0x00000000
      contentLength = 0
      contentType = 0x004b9e28 @"image/jpeg"
      date = 0x1d0e8340 <not an Objective-C object>
      securityToken = 0x00000000
      bucket = 0x1d4464f0 @"*****"
      key = 0x1d1eb040 @"id_C78ACBEA_58163_0.jpg"
      subResource = 0x00000000
    }
    cannedACL = 0x00000000
    fullACL = 0x00000000
    storageClass = 0x00000000
    serverSideEncryption = 0x00000000
    metadata = 0x1d2d6700 0 key/value pairs
  }
  expiresSet = NO
  cacheControl = 0x00000000
  contentDisposition = 0x00000000
  contentEncoding = 0x00000000
  contentMD5 = 0x00000000
  filename = 0x00000000
  data = 0x1d1a9f00 3814479 bytes
  stream = 0x00000000
  expect = 0x00000000
  generateMD5 = NO
  expires = 0
  redirectLocation = 0x00000000
}
4

0 に答える 0