Sentry-javascript: iOS Firefox의 SDK 버그

에 λ§Œλ“  2019λ…„ 08μ›” 01일  Β·  22μ½”λ©˜νŠΈ  Β·  좜처: getsentry/sentry-javascript

https://sentry.io/share/issue/52e170dbb4b84d16a8e92ece8d4978e9/

νŒ¨ν‚€μ§€ + 버전

  • [x] @sentry/browser
  • [ ] @sentry/node
  • [ ] raven-js
  • [ ] raven-node _(λ…Έλ“œμš© 레이븐)_
  • [ ] λ‹€λ₯Έ:

버전:

5.5.0

μ„€λͺ…

μ²¨λΆ€λœ 링크λ₯Ό μ°Έμ‘°ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€. μž¬ν˜„ κ°€λŠ₯ν•œ μ €μž₯μ†Œκ°€ μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

null is not an object (evaluating 'a.title')

λ‚΄ μ½”λ“œκ°€ μ•„λ‹Œ SDK μžμ²΄μ—μ„œ μ‹œμž‘λ©λ‹ˆλ‹€. λ‚΄ μ½”λ“œμ— state.title κ°€ μ‚¬μš©λœ 곳이 λͺ‡ ꡰ데 μžˆμ§€λ§Œ 였λ₯˜μ— ν‘œμ‹œλœ 영ν–₯을 λ°›λŠ” νŽ˜μ΄μ§€μ—λŠ” μ—†μŠ΅λ‹ˆλ‹€.

In Progress

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμ—ˆμŠ΅λ‹ˆκΉŒ? λ˜ν•œ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

미리 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

λͺ¨λ“  22 λŒ“κΈ€

곡유 κ°€λŠ₯ν•œ 링크에 μ œν•œλœ μ–‘μ˜ 정보가 ν‘œμ‹œλ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ μ•„λž˜ 덀프λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

μ‚¬μš©μž μ—μ΄μ „νŠΈ

Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) FxiOS/14.0b12646 Mobile/14G60 Safari/603.3.8
--
Firefox iOS 14.0
browser.name
Firefox iOS
device
iPhone
device.family
iPhone
environment
production
handled
yes
level
error
mechanism
instrument
os
iOS 10.3.3
os.name
iOS

@DaddyWarbucks μ΄λ²€νŠΈμ— λŒ€ν•œ 직접 링크λ₯Ό κ²Œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μΈμ¦μƒμ˜ 이유둜 λ³Ό 수 μ—†λ‹€κ³  κ°€μ •ν–ˆμ§€λ§Œ μ—¬κΈ° https://sentry.io/organizations/straightline-ct/issues/1135547765/?project=1500106μž…λ‹ˆλ‹€.

handleEvent 블둝을 μΆ”κ°€ν•œ ν›„ μ‹€ν–‰ λ©”λͺ¨λ₯Ό μ΄λ™ν•˜λŠ” 것을 μžŠμ—ˆμŠ΅λ‹ˆλ‹€. μˆ˜μ •: https://github.com/getsentry/sentry-javascript/commit/3bada5d80d267c8da5a34235caf16a966d374811

이 였λ₯˜λŠ” λ‚΄λΆ€ 타이밍 APIλ₯Ό λž˜ν•‘ν•˜λŠ” 방식 λ•Œλ¬Έμ— Sentry둜만 ν‘œμ‹œλ©λ‹ˆλ‹€. λ‹€μŒμ„ μ°Έμ‘°ν•˜μ„Έμš”.
image

μ½”λ“œμ—μ„œ title μ•‘μ„ΈμŠ€ κΆŒν•œμ΄ μžˆλŠ” setTimeout μΈμŠ€ν„΄μŠ€λ₯Ό μ°Ύμ•„ μ£Όμš” 원인을 νŒŒν—€μΉ  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

@kamilogorek μš°λ¦¬λŠ” @DaddyWarbucks 와 λ™μΌν•œ λ¬Έμ œμ—

@kamilogorek λ‚΄ μ½”λ“œμ— *

@chocnut 이전 λ¬Έμ œμ™€ λ™μΌν•œ μ§ˆλ¬Έμž…λ‹ˆλ‹€. μ΄λ²€νŠΈμ— λŒ€ν•œ 링크λ₯Ό κ²Œμ‹œν•˜μ—¬ κ·Έκ³³μ—μ„œ 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ?

우리의 문제λ₯Ό @chocnut 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ @kamilogorek : μš°λ¦¬κ°€ μ•„λ‹ˆλΌ 버전 5.7.0 νŒŒμ΄μ–΄ 폭슀 iOSμ—μ„œμ΄ 문제λ₯Ό μ–»λŠ”λ‹€.
μ½”λ“œμ— title 속성에 μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” setTimeout이 μ—†μŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ Sentry μ΄λ²€νŠΈλŠ” 처리되고 ν•¨μˆ˜κ°€ setTimeout μž„μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
(https://sentry.io/organizations/2rivers-nv/issues/1263831869/events/7f024c4b94ab44ab9b870d6558d27149/ μ°Έμ‘°)

iOS Firefox μ‚¬μš©μžμ—κ²Œλ„ λ‹€μŒ 였λ₯˜κ°€ ν‘œμ‹œλ˜λŠ”μ§€ ν™•μΈν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. TypeError: null is not an object (evaluating 'a.title')

우리 μ½”λ“œλ² μ΄μŠ€μ˜ μ–΄λ””μ—μ„œλ‚˜ μ‚¬μš©λ˜λŠ” μœ μΌν•œ .title λŠ” Sass λͺ¨λ“ˆμ—μ„œ κ°€μ Έμ˜¨ 것이며 μ½”λ“œκ°€ ν”„λ‘œλ•μ…˜ 단계에 도달할 λ•Œ 이미 μ»΄νŒŒμΌλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

Sentry ν”„λ‘œμ νŠΈλŠ” λΉ„κ³΅κ°œμ΄λ―€λ‘œ λΆˆν–‰νžˆλ„ 링크λ₯Ό μ œκ³΅ν•  수 μ—†μ§€λ§Œ λͺ¨λ“  λ¬Έμ œλŠ” iOS 13, Firefox 19 및 20μ—μ„œ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. μž¬ν˜„ν•˜κΈ°λŠ” μ‰½μ§€λ§Œ Sentry μŠ€ν¬λ¦½νŠΈκ°€ μžˆλŠ” μ‚¬μ΄νŠΈλ₯Ό λ‘œλ“œν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. 그리고 그것은 였λ₯˜λ₯Ό μœ λ°œν•©λ‹ˆλ‹€.

μΆ”κ°€ 정보λ₯Ό μ œκ³΅ν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. μ–΄λ–€ μ‹μœΌλ‘œλ“  도움이 λœλ‹€λ©΄ μ–Έμ œλ“ μ§€ μ €μ—κ²Œ 핑을 λ³΄λ‚΄μ£Όμ‹­μ‹œμ˜€. πŸ‘

image

이것은 λ™μΌν•œ 문제의 μŠ€ν¬λ¦°μƒ·μž…λ‹ˆλ‹€. iOS Firefoxμ—μ„œλ§Œ λ°œμƒν•©λ‹ˆλ‹€.

μš°λ¦¬λ„ 이 λ¬Έμ œμ— μ§λ©΄ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. μ—…λ°μ΄νŠΈ λ˜λŠ” ν•΄κ²° 방법이 μžˆμŠ΅λ‹ˆκΉŒ? FF iOS μ‚¬μš©μž μ „μš©μœΌλ‘œ μœ„μ— ν‘œμ‹œλœ 것과 μ •ν™•νžˆ λ™μΌν•œ λ‘œκ·Έμž…λ‹ˆλ‹€.

λ˜ν•œ iOS의 Firefox(μ΄μƒν•˜κ²Œλ„ Apple Mail)μ—μ„œλ§Œ 이 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. μ†ŒμŠ€ 맡이 μ§€μ›ν•˜λŠ” μŠ€νƒ 좔적이 μ œκ³΅λ©λ‹ˆλ‹€. μœ„μ—μ„œ λ³Έ κ²ƒκ³ΌλŠ” 쑰금 λ‹€λ₯Έ 것 κ°™μŠ΅λ‹ˆλ‹€.

image

iOS 곳곳에 이에 λŒ€ν•œ 독립적인 보고가 λ„ˆλ¬΄ λ§Žλ‹€λŠ” 점을 κ³ λ €ν•  λ•Œ Sentry SDK에 λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆκΉŒ?

@chrishoage 당신은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” raven-jsλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ•„, κ°μ‚¬ν•©λ‹ˆλ‹€. μ—…κ·Έλ ˆμ΄λ“œλ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ—¬μ „νžˆ 우리 ν”„λ‘œμ νŠΈκ°€ λ™μΌν•œ ν”Œλž«νΌ(iOS Firefox)μ—μ„œ λ™μΌν•œ 였λ₯˜λ₯Ό 보고 μžˆλ‹€λŠ” 것이 κΆκΈˆν•©λ‹ˆλ‹€.

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμ—ˆμŠ΅λ‹ˆκΉŒ? λ˜ν•œ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

미리 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

λ˜ν•œ μ‚¬μš©μžκ°€ iOSμ—μ„œ firefoxλ₯Ό 톡해 μ‚¬μ΄νŠΈμ— μ•‘μ„ΈμŠ€ν•  λ•Œ λ™μΌν•œ μ˜ˆμ™Έ TypeError: null is not an object (evaluating 'a.title') λ°œμƒν•©λ‹ˆλ‹€.

μš°λ¦¬λŠ” μ½”λ“œλ² μ΄μŠ€μ˜ μ–΄λŠ κ³³μ—μ„œλ„ title μ°Έμ‘°ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 이것은 SDK λ˜λŠ” μΆ©λŒν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ 온 κ²ƒμž…λ‹ˆλ‹€.

같은 것.
iOS의 νŒŒμ΄μ–΄ν­μŠ€.

ν˜Ήμ‹œ λ³΄κ³ μ„œ λŒ€ν™” μƒμžλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?
우리 SDKλŠ” λ‚΄λΆ€μ μœΌλ‘œ title μ†μ„±μœΌλ‘œ 아무 μž‘μ—…λ„ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 첫 번째 좔츑은 μ‚¬μš©μž λ³΄κ³ μ„œ λŒ€ν™” μƒμžμ˜ λ²„κ·Έμž…λ‹ˆλ‹€.

λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ§€λ§Œ μ΄μƒν•˜κ²Œλ„ 단일 νŽ˜μ΄μ§€μ—μ„œλ§Œ λ°œμƒν•©λ‹ˆλ‹€. ν™•μΈν–ˆλŠ”λ° μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μˆ˜ν–‰ν•˜λŠ” κ²½μš°κ°€ μ•„λ‹ˆλ©΄ μ½”λ“œ μ°Έμ‘° 제λͺ©μ΄ 어디에도 μ—†μŠ΅λ‹ˆλ‹€. μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” iOS 13.3.1 개발자 베타(17D5044a)λ₯Ό μ‹€ν–‰ν•˜λŠ” iPhone 13 Proμ—μ„œ Firefox 21.0(16918)을 μ‚¬μš©ν•˜μ—¬ λ°œμƒν•©λ‹ˆλ‹€. λ˜ν•œ λ™μΌν•œ κΈ°κΈ°μ—μ„œ Chrome(버전 79.0.3945.73)κ³Ό Safariλ₯Ό λͺ¨λ‘ ν…ŒμŠ€νŠΈν–ˆμ§€λ§Œ 문제λ₯Ό μž¬ν˜„ν•  수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ Windows 10 Pro 버전 1903(λΉŒλ“œ 18362.592)의 Firefox 72.0.2μ—μ„œ 문제λ₯Ό μž¬ν˜„ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

였히렀 μ΄μƒν•˜κ²Œλ„ Firefox Focus 8.1.3μ—μ„œλ„ μž¬ν˜„ν•  수 μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것은 Sentryκ°€ Focus에 μ˜ν•΄ μ°¨λ‹¨λ˜μ—ˆκΈ° λ•Œλ¬ΈμΌ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 좔적기λ₯Ό μ°¨λ‹¨ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆκΈ° λ•Œλ¬Έμ— λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” 것이 μ•„λ‹ˆλΌ Sentryκ°€ λ‘œλ“œλ˜μ§€ μ•Šλ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@HazATκ°€ μ œμ•ˆν•œ λŒ€λ‘œ μ‚¬μ΄νŠΈμ˜ μ—¬λŸ¬ λΆ€λΆ„μ—μ„œ λ³΄κ³ μ„œ λŒ€ν™” μƒμžλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ§€λ§Œ 영ν–₯을 λ°›λŠ” νŽ˜μ΄μ§€μ—μ„œλŠ” μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ κ·Έλ ‡κ²Œ μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ„ΌνŠΈλ¦¬ 이벀트 링크: https://sentry.io/organizations/ocjc-v1/issues/1447541972/events/5506f883daa742a19d002af4898996c1/

도움이 될 수 μžˆλŠ” μΆ”κ°€ 정보가 있으면 μ•Œλ €μ£Όμ„Έμš”!

μ£„μ†‘ν•©λ‹ˆλ‹€. μ—…λ‘œλ“œν•œ ν•­λͺ©μ΄ μžˆμŠ΅λ‹ˆκΉŒ? 저도 같은 문제λ₯Ό κ²ͺκ³  μžˆλŠ”λ° λ„ˆλ¬΄ λ‹΅λ‹΅ν•΄μ„œ λ‹΅λ³€μ΄λ‚˜ ν•΄κ²° 방법이 μ—†μŠ΅λ‹ˆλ‹€.

또 λ‹€λ₯Έ +1.
Sentry SDK에 iOS 13.3.1의 Firefox와 ν˜Έν™˜μ„± λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

Screenshot 2020-03-30 at 11 31 03 AM

@kamilogorek @dcramer μ—¬κΈ°μ—μ„œ 이 λ¬Έμ œμ— μ§λ©΄ν•œ λ§Žμ€ μ‚¬λžŒλ“€μ΄ 심측 뢄석을 보증할 만큼 μΆ©λΆ„ν•©λ‹ˆκΉŒ? 이것이 단지 λ‚΄λΆ€ 문제*이고 νŽ˜μ΄μ§€μ˜ μ‹€μ œ JS에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ—¬κΈ° μžˆλŠ” λŒ€λΆ€λΆ„μ˜ μ‚¬λžŒλ“€μ€ 이 이벀트λ₯Ό 기꺼이 λ¬΄μ‹œν•  κ²ƒμž…λ‹ˆλ‹€. λ‹Ήμ‹ (λ˜λŠ” μ—¬κΈ° λ‹€λ₯Έ λˆ„κ΅°κ°€)이 그런 κ²½μš°μΈμ§€ 확인해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? (μ£„μ†‘ν•©λ‹ˆλ‹€. 직접 ν…ŒμŠ€νŠΈν•  ν•΄λ‹Ή λ²„μ „μ˜ iOS κΈ°κΈ°κ°€ μ—†μŠ΅λ‹ˆλ‹€.)

λ‚΄λΆ€ 문제* = iOS+Firefox의 Sentry SDK 문제일 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” λ‹¨μˆœνžˆ iOS의 Firefox 문제일 수 μžˆμŠ΅λ‹ˆλ‹€.

우리의 SDKλ‚˜ ReportDialogλŠ” μ–΄λ–€ λ°©μ‹μœΌλ‘œλ“  개체의 title 속성을 κ±΄λ“œλ¦¬μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ Mozilla의 μ €μž₯μ†Œμ—λŠ” 이 μ •ν™•ν•œ 문제λ₯Ό μ„€λͺ…ν•˜λŠ” 두 가지 λ―Έν•΄κ²° λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/mozilla/fxa/issues/572
https://github.com/mozilla/fxa/issues/2342

λŒ€λŸ‰μœΌλ‘œ 이 λ¬Έμ œκ°€ λ°œμƒν•œ λͺ¨λ“  μ‚¬λžŒμ—κ²Œ κ°€μž₯ 쒋은 ꢌμž₯ 사항은 ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ 이λ₯Ό ν•„ν„°λ§ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ°Έμ‘°: https://docs.sentry.io/platforms/javascript/#filter -events--custom-logic

μ΅œμ’… 였λ₯˜ ν˜•νƒœ/λ©”μ‹œμ§€λ₯Ό μ•Œκ³  μžˆμœΌλ―€λ‘œ ignoreErrors ꡬ성 μ˜΅μ…˜μ„ 직접 μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

건배!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰