linkedin / linkedin/dexmaker

dexmaker gson crash

Open
#177 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2k
Forks
262
PR merge metrics
No merged PRs in 30d

Description

libc.so  abort
--
  | libart.so  Abort
  | libbase.so  LogMessage
  | libart.so  GetArtField
  | libart.so  Field_set
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so  Execute
  | libart.so  ArtInterpreterToInterpreterBridge
  | libart.so
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_static_stub
  | libart.so  Invoke
  | libart.so  InvokeWithArgArray
  | libart.so  InvokeMethod
  | libart.so  Method_invoke
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeStatic
  | libart.so  mterp_op_invoke_static
  | libart.so  MterpInvokeStatic
  | libart.so  mterp_op_invoke_static
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  InvokeWithArgArray
  | libart.so  InvokeMethod
  | libart.so  Method_invoke
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeStatic
  | libart.so  mterp_op_invoke_static
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_static_stub
  | libart.so  Invoke
  | libart.so  InvokeWithArgArray
  | libart.so  InvokeMethod
  | libart.so  Method_invoke
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeStatic
  | libart.so  mterp_op_invoke_static
  | libart.so  MterpInvokeStatic
  | libart.so  mterp_op_invoke_static
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  InvokeWithArgArray
  | libart.so  InvokeMethod
  | libart.so  Method_invoke
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeStatic
  | libart.so  mterp_op_invoke_static
  | libart.so  Execute
  | libart.so  artQuickToInterpreterBridge
  | libart.so  art_quick_to_interpreter_bridge
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  InvokeWithArgArray
  | libart.so  InvokeMethod
  | libart.so  Method_invoke
  | libart.so  art_quick_invoke_stub
  | libart.so  Invoke
  | libart.so  ArtInterpreterToCompiledCodeBridge
  | libart.so
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeInterface
  | libart.so  mterp_op_invoke_interface
  | libart.so  MterpInvokeDirect
  | libart.so  mterp_op_invoke_direct
  | libart.so  MterpInvokeStatic
  | libart.so  mterp_op_invoke_static
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | libart.so  mterp_op_invoke_virtual
  | libart.so  MterpInvokeVirtual
  | java.lang.reflect.Field.set(:0)
  | com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:133)
  | com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
  | com.google.gson.Gson.fromJson(Gson.java:932)
  | com.google.gson.Gson.fromJson(Gson.java:897)
  | com.google.gson.Gson.fromJson(Gson.java:846)

It was happened when I was mocking some static method. Any idea?

Contributor guide

Open the contributing guide

Research direction

Start with the reported Gson call path, especially ReflectiveTypeAdapterFactory$1.read, ReflectiveTypeAdapterFactory$Adapter.read, and Gson.fromJson, then inspect how Dexmaker handles mocked static methods on Android. Reproduce the crash with the static-method mocking setup and identify the cause of the Field.set abort; done means the scenario no longer aborts and has a regression test.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.