Repository navigation
Closed
Description
i got this in some part of json file in sentry server which send from
raven 3.70 android 6.0.1 Mi4 model
the first one show only [native code] message vs show path and module in the simulater device
"sentry.interfaces.Exception": {
"exc_omitted": null,
"values": [
{
"stacktrace": {
"frames": [
{
"abs_path": "[native code]",
"filename": "[native code]",
"in_app": false
},
{
"function": "forEach",
"abs_path": "[native code]",
"filename": "[native code]",
"in_app": false
},
{
"abs_path": "[native code]",
"filename": "[native code]",
"in_app": false
},
{
"abs_path": "[native code]",
"filename": "[native code]",
"in_app": false
},
{
"abs_path": "[native code]",
"filename": "[native code]",
"in_app": false
},
{
"abs_path": "[native code]",
"filename": "[native code]",
"in_app": false
}
],
"has_system_frames": false,
"frames_omitted": null
},
"mechanism": null,
"type": "TypeError",
"module": null,
"thread_id": null,
"value": "2 is not a function (evaluating 'e()')",
"raw_stacktrace": null
}
]
},compare with this json in simulator ( api 23, android 6.0.0 )
"sentry.interfaces.Exception": {
"exc_omitted": null,
"values": [
{
"stacktrace": {
"has_system_frames": false,
"frames": [
{
"function": "onmessage",
"abs_path": "http://localhost:8081/debuggerWorker.js",
"module": "debuggerWorker",
"in_app": false,
"lineno": 39,
"colno": 56,
"filename": "/debuggerWorker.js"
},
{
"function": "MessageQueue.callFunctionReturnFlushedQueue",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 11917,
"colno": 1,
"filename": "/index.android.bundle"
},
{
"function": "guard",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 11849,
"colno": 1,
"filename": "/index.android.bundle"
},
{
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 11918,
"colno": 8,
"filename": "/index.android.bundle"
},
{
"function": "MessageQueue.__callFunction",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 12036,
"colno": 34,
"filename": "/index.android.bundle"
},
{
"function": "Object.receiveTouches",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 19688,
"colno": 25,
"filename": "/index.android.bundle"
},
{
"function": "Object._receiveRootNodeIDEvent",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 19626,
"colno": 14,
"filename": "/index.android.bundle"
},
{
"function": "Object.batchedUpdates",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20889,
"colno": 18,
"filename": "/index.android.bundle"
},
{
"function": "Object.batchedUpdates",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 33163,
"colno": 13,
"filename": "/index.android.bundle"
},
{
"function": "ReactDefaultBatchingStrategyTransaction.perform",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 21685,
"colno": 12,
"filename": "/index.android.bundle"
},
{
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 19627,
"colno": 25,
"filename": "/index.android.bundle"
},
{
"function": "Object.handleTopLevel",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20727,
"colno": 1,
"filename": "/index.android.bundle"
},
{
"function": "runEventQueueInBatch",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20716,
"colno": 16,
"filename": "/index.android.bundle"
},
{
"function": "Object.processEventQueue",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20025,
"colno": 1,
"filename": "/index.android.bundle"
},
{
"function": "forEachAccumulated",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20690,
"colno": 5,
"filename": "/index.android.bundle"
},
{
"function": "executeDispatchesAndReleaseTopLevel",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 19849,
"colno": 8,
"filename": "/index.android.bundle"
},
{
"function": "executeDispatchesAndRelease",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 19838,
"colno": 18,
"filename": "/index.android.bundle"
},
{
"function": "Object.executeDispatchesInOrder",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20408,
"colno": 1,
"filename": "/index.android.bundle"
},
{
"function": "executeDispatch",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20385,
"colno": 17,
"filename": "/index.android.bundle"
},
{
"function": "Object.invokeGuardedCallback",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 20553,
"colno": 8,
"filename": "/index.android.bundle"
},
{
"function": "Constructor.proxiedMethod [as touchableHandleResponderRelease]",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 9068,
"colno": 22,
"filename": "/index.android.bundle"
},
{
"function": "Constructor.touchableHandleResponderRelease",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 26566,
"colno": 6,
"filename": "/index.android.bundle"
},
{
"function": "Constructor.proxiedMethod [as _receiveSignal]",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 9068,
"colno": 22,
"filename": "/index.android.bundle"
},
{
"function": "Constructor._receiveSignal",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 26792,
"colno": 6,
"filename": "/index.android.bundle"
},
{
"function": "Constructor.proxiedMethod [as _performSideEffectsForTransition]",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 9068,
"colno": 22,
"filename": "/index.android.bundle"
},
{
"function": "Constructor._performSideEffectsForTransition",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 26876,
"colno": 6,
"filename": "/index.android.bundle"
},
{
"function": "Constructor.proxiedMethod [as touchableHandlePress]",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 9068,
"colno": 22,
"filename": "/index.android.bundle"
},
{
"function": "Constructor.touchableHandlePress",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 58914,
"colno": 32,
"filename": "/index.android.bundle"
},
{
"function": "Object.onPress",
"abs_path": "http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=true&minify=false",
"module": "<unknown module>",
"in_app": false,
"lineno": 123937,
"colno": 100,
"filename": "/index.android.bundle"
}
],
"frames_omitted": null
},
"mechanism": null,
"type": "TypeError",
"module": null,
"thread_id": null,
"value": "a is not a function",
"raw_stacktrace": null
}Reacted by Andrej Badin
Metadata
Metadata
Assignees
Labels
No labels
Activity
benvinegar commentedon Oct 17, 2016
@vehas – the stack trace is what React Native gives us through its own error handler. We certainly don't re-write the stack trace to say
[native code].This is probably just a limitation of React Native production builds on Android. Anecdotally, iOS seems to give much more.
antoinerousseau commentedon Oct 20, 2016
@vehas how did you work around this? got the same issue on my LG G3
khanghoang commentedon Nov 5, 2016
@benvinegar I don't think it because of React Native on Android, in fact I managed to get the log of a crash on production Android app. It looks like this
I think above log is okay because I tried the same crash on iOS production build and here is the iOS crash log
benvinegar commentedon Nov 18, 2016
Note that that those values don't include filenames (e.g.
touchableHandlePress@321:1163). You're looking at a level that the React Native plugin cannot (the Android crash dump) because it is a pure JavaScript solution.An error object is passed through the handler via
ErrorUtils.setGlobalHandler. It takes the values and passes them to Sentry. If they are not formatted correctly, there's not much we can do. Note also that "[native code]" does not appear in the Raven source code. AFAICT, this is not a case where we see a value we don't recognize and just convert it to[native code].Unfortunately I'm not an Android developer, so there's not much I can do here other than to say – if you find something that's incorrect, that can be addressed from the JavaScript layer, I'd be glad to accept PRs.
One thing you could try is making a dump of the raw error from the React Native plugin and see if it differs from the crash that appears in Sentry.
khanghoang commentedon Nov 21, 2016
@benvinegar I got your point, but it's a single bundle of javascript code so that IMO there is no need for
filename(you can see that there is no file name for ios, but it works just fine on iOS).Because our company uses Sentry for RN on production so we will try our best to figure out what we can do about this.
denstepa commentedon Jan 5, 2017
We faced the same issue, and this fix denstepa@885f0a1 helped us to get stacktraces and source maps working for android in production mode. The problem was with path to file that was
index.android.bundle, withoutfile:///in the beginning as it was for iOSI will try to check if it could causes problems in other browsers etc and will do pull request a bit later
khanghoang commentedon Jan 7, 2017
@denstepa keep us in the loop, thanks
danieldkim commentedon Jan 14, 2017
I tried out @denstepa's fix (with RN 0.40.0). It kinda works but the Sentry UI gets confused trying to map it to the original source and messes up the top frame of the stack trace. The raw JSON looks a bit better but the
colnoattribute is off. Thecontext_lineattribute does, however, seem to have the appropriate data. It doesn't seem to be related to thecolnoso I'm not sure how that data is derived. In any event, although that code snippet in thecontext_lineis from the raw bundle it's useful and better than nothing.khanghoang commentedon Jan 17, 2017
@danieldkim I think it will be better if we can test @denstepa's fix with RN <0.40.x since there are breaking changes in 0.40.x.
danieldkim commentedon Jan 17, 2017
OK that's fine but I don't think there any breaking changes in that 0.40.0 that would affect this issue.
benvinegar commentedon Feb 1, 2017
Hey everyone here – I would love to take this fix upstream, but I need:
Can someone help?
khanghoang commentedon Feb 2, 2017
@benvinegar I can help you to create minimum RN project that can reproduce the bug. Is it what you're looking for?
ACBrown commentedon Feb 2, 2017
@benvinegar I'm not sure how to create the test frames, but I can confirm that the fix is working for me. I'm currently using @denstepa's fix in my Android app in prod (running react native 0.37).
misterecco commentedon Feb 17, 2017
@benvinegar I also confirm that the fix is working for me
adding react native stacktrace fix getsentry#731 (comment)
10 remaining items
brunolemos commentedon Mar 7, 2017
@denstepa can you help us write a test to get this deployed?
khanghoang commentedon Mar 9, 2017
@benvinegar yes, I used #875 and it still didn't work
Fix RN frames on Android ... (#875)
bood commentedon Apr 15, 2017
@benvinegar
Have this issue too (react-native 0.42.3, raven-js 3.14.1), and here is a raw example I get from the input of
computeStackTraceFromStackProp, i.e.ex.stackIt looks to me that the issue is that the
urlpart does not have a special origin, so the regex cannot match. What @denstepa's fix does is simply match with abundlesuffix, cannot say it's appropriate or not. Any reason why not we just treat the string between@and:as theurl?This is the one when the bundle lives in asset
This is the one when the bundle lives in cache
valeryq commentedon Apr 18, 2017
@benvinegar +1. I have this on Android.
For iOS it's okey:
misterecco commentedon Apr 18, 2017
@benvinegar The fix added in 3.14.0 release doesn't seem to work.
I'm sorry if it's because of the stacktrace I posted before (which was most probably not obtained correctly).
Here are two raw stacktraces straight from logcat. I hope they will be more useful in resolving the issue (@denstepa's fork still seems to be working fine). I'm using react native v0.42.3
RN_str_1.txt
RN_str_2.txt
chetankothari commentedon May 9, 2017
I am still facing the issue. Would like to check on the status of this.
Using:
raven-js: 3.15.0
react-native: 0.42.3
Would be glad to give any additional info required.
Thanks :)
alexkring commentedon May 10, 2017
I am facing this issue as well. It's really a blocker for us right now, given that we cant get crash reports on sentry for android without this working. I'm going to look for a solution, let me know if you guys find anything.
f0rr0 commentedon May 11, 2017
Same here, I tried @denstepa's fix as well. Not working
alexkring commentedon May 11, 2017
@denstepa's fix mostly works, but the only thing that appears to be off, is that the very top of the callstack, where the exception occurs, is off. It points to the wrong line of code. All of the other parts of the stack trace point to the correct line of code. So maybe his fix works, but there is some other bug as well?
Fixing issue where callstack is not showing up in react native. I am …
LowieHuyghe commentedon Jun 13, 2017
I can confirm what @alexkring says. Using the Nextdoor/raven-js fork I actually get a stacktrace instead of the
[native code]. Also the first row of the callstack indeed seems to be off.HazAT commentedon Jun 28, 2017
This has been fixed and will be in the next release.
feat(core): Add hook to customize source map file resolution (getsent…