Firebase crash 批量上传失败,原因不明
Firebase crash batch upload fail for unknown reason
我正在尝试将 DSYM 上传到 firebase,它在几天前一直运行良好。当我启动脚本时,它开始登录,几行后卡住了几分钟然后失败了。
/Users/..../dSYMs/DF...C47.dSYM/Contents/Resources/DWARF/leveldb: warning: function at offset 0x51662 has no name
./Pods/FirebaseCrash/upload-sym-util.bash:365: error: upload: Unable to upload symbol file (reason unknown).
有趣的是,在 firebase 控制台中它告诉我上传成功:
Future stack traces for UUID B4...AAF will
be symbolicated using the uploaded symbol file.
但它从来没有,因为我已经 "uploaded" 几个这样的,从那以后,我又遇到了几次崩溃,但仍然没有符号化...
怎么回事?
仅供参考:自 2 月以来,我一直在使用 firebase 崩溃报告,并且效果很好。我几天前将 mac 更新为 High Sierra。
你的
TL;DR
在 upload-sym-util.bash
中查找以下行:
HTTP_STATUS=$(curl ${CURLOPT} -sfL -H 'Content-Type: text/plain' -H "Authorization: Bearer ${BEARER_TOKEN}" -w '%{http_code}' -T "${FILE}" "${UPLOAD_URL}")
并在末尾追加 --http1.1
使其变为:
HTTP_STATUS=$(curl ${CURLOPT} -sfL -H 'Content-Type: text/plain' -H "Authorization: Bearer ${BEARER_TOKEN}" -w '%{http_code}' -T "${FILE}" "${UPLOAD_URL}" --http1.1)
说明
我们在通过 XCode 在 Firebase 上上传 DSYM 文件时遇到了这个问题。让我们发疯的是这个过程似乎随机地成功和失败。上传失败时,几分钟后就成功了。
我们设法手动 运行 有问题的 curl
命令,发现它正在返回一个 000 的 HTTP 状态代码,这似乎是在服务器实际 [=39 之前关闭连接时发生的=] 任何东西(例如:超时)。通过使用 --verbose
参数,我们发现 curl
正在中止带有 INTERNAL_ERROR (err 2)
的调用,这似乎与 HTTP/2 的使用有关。当我们发现唯一能够正确上传 DSYM 文件的机器与其他人具有相同版本的 curl
但没有 HTTP/2 支持时,我们设法确认了这一点,这显然是在高山脉。我们强制 curl
使用 HTTP1.1,它成功了。
我正在尝试将 DSYM 上传到 firebase,它在几天前一直运行良好。当我启动脚本时,它开始登录,几行后卡住了几分钟然后失败了。
/Users/..../dSYMs/DF...C47.dSYM/Contents/Resources/DWARF/leveldb: warning: function at offset 0x51662 has no name
./Pods/FirebaseCrash/upload-sym-util.bash:365: error: upload: Unable to upload symbol file (reason unknown).
有趣的是,在 firebase 控制台中它告诉我上传成功:
Future stack traces for UUID B4...AAF will be symbolicated using the uploaded symbol file.
但它从来没有,因为我已经 "uploaded" 几个这样的,从那以后,我又遇到了几次崩溃,但仍然没有符号化...
怎么回事?
仅供参考:自 2 月以来,我一直在使用 firebase 崩溃报告,并且效果很好。我几天前将 mac 更新为 High Sierra。
你的
TL;DR
在 upload-sym-util.bash
中查找以下行:
HTTP_STATUS=$(curl ${CURLOPT} -sfL -H 'Content-Type: text/plain' -H "Authorization: Bearer ${BEARER_TOKEN}" -w '%{http_code}' -T "${FILE}" "${UPLOAD_URL}")
并在末尾追加 --http1.1
使其变为:
HTTP_STATUS=$(curl ${CURLOPT} -sfL -H 'Content-Type: text/plain' -H "Authorization: Bearer ${BEARER_TOKEN}" -w '%{http_code}' -T "${FILE}" "${UPLOAD_URL}" --http1.1)
说明
我们在通过 XCode 在 Firebase 上上传 DSYM 文件时遇到了这个问题。让我们发疯的是这个过程似乎随机地成功和失败。上传失败时,几分钟后就成功了。
我们设法手动 运行 有问题的 curl
命令,发现它正在返回一个 000 的 HTTP 状态代码,这似乎是在服务器实际 [=39 之前关闭连接时发生的=] 任何东西(例如:超时)。通过使用 --verbose
参数,我们发现 curl
正在中止带有 INTERNAL_ERROR (err 2)
的调用,这似乎与 HTTP/2 的使用有关。当我们发现唯一能够正确上传 DSYM 文件的机器与其他人具有相同版本的 curl
但没有 HTTP/2 支持时,我们设法确认了这一点,这显然是在高山脉。我们强制 curl
使用 HTTP1.1,它成功了。