Skip to content

Raven.send() blows up when decoding json {\n #237

@dbenamy

Description

@dbenamy

Sending an event with sentry_event['exception']['stacktrace']['frames'] set to

[{"abs_path"=>"foo.rb",
  "function"=>"block in <class:Server>",
  "pre_context"=>
   ["        plan = Plan.load()\n",
    "        {\n",
    "          :foo => self.foo?,\n"],
  "post_context"=>["        }.to_json\n", "      end\n", "\n"],
  "context_line"=>
   "          :plan => PlanResource.new(plan).describe\n",
  "lineno"=>100,
  "in_app"=>true,
  "project_root"=>nil,
  "filename"=>"foo.rb"}]

will blow up. Changing

"{\n",

to

"{",

makes it work.

Looks like https://github.com/getsentry/raven-ruby/blob/0.12.0/lib/raven/processor.rb#L18 should return nil if the string isn't valid json, but in this case a NoMethodError is happening rather than an OkJson::Error.

NoMethodError
undefined method `[]' for nil:NilClass
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/okjson.rb:137:in `objparse'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/okjson.rb:105:in `textparse'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/okjson.rb:47:in `decode'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor.rb:20:in `parse_json_or_nil'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:15:in `block in process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `each'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `inject'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:14:in `block in process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `each'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `inject'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:14:in `block in process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `each'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `inject'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:14:in `block in process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `each'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `inject'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:14:in `block in process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `each'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `inject'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:14:in `block in process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `each'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `inject'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/processor/sanitizedata.rb:11:in `process'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/client.rb:54:in `block in encode'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/client.rb:53:in `each'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/client.rb:53:in `reduce'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/client.rb:53:in `encode'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/client.rb:34:in `send'
ruby/2.1.0/gems/sentry-raven-0.12.0/lib/raven/base.rb:72:in `send'

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions