dexmaker gson crash
- 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
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