Skip to content

Connecting to an android app results in a ClassCast exception. #8712

@d-millar

Description

@d-millar

Discussed in #8702

Originally posted by shamefulCake1 November 26, 2025

  1. Launch a camera app on your phone
  2. adb -s phone_serial forward tcp:54321 jdwp:pid
  3. find pid of your camera
  4. In ghidra debugger: Configure and Launch -> java attach port, fill in the data
  5. Connect
  6. Explore threads and such
class ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$PendingNode cannot be cast to class ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode (ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$PendingNode and ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode are in unnamed module of loader ghidra.GhidraClassLoader @4b6995df)
java.lang.ClassCastException: class ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$PendingNode cannot be cast to class ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode (ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$PendingNode and ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode are in unnamed module of loader ghidra.GhidraClassLoader @4b6995df)
	at ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode.lambda$getNode$0(ObjectTreeModel.java:311)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:1034)
	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
	at ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode.getNode(ObjectTreeModel.java:313)
	at ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode.getNode(ObjectTreeModel.java:318)
	at ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode.getNode(ObjectTreeModel.java:318)
	at ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode.getNode(ObjectTreeModel.java:318)
	at ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel$AbstractNode.getNode(ObjectTreeModel.java:322)
	at ghidra.app.plugin.core.debug.gui.model.ObjectTreeModel.getNode(ObjectTreeModel.java:959)
	at ghidra.app.plugin.core.debug.gui.model.ObjectsTreePanel.updateTreeModelForCoordinates(ObjectsTreePanel.java:269)
	at ghidra.app.plugin.core.debug.gui.model.ObjectsTreePanel.goToCoordinates(ObjectsTreePanel.java:247)
	at ghidra.app.plugin.core.debug.gui.model.DebuggerModelProvider.coordinatesActivated(DebuggerModelProvider.java:973)
	at ghidra.app.plugin.core.debug.gui.model.DebuggerModelPlugin.coordinatesActivated(DebuggerModelPlugin.java:117)
	at ghidra.app.plugin.core.debug.gui.model.DebuggerModelPlugin.processEvent(DebuggerModelPlugin.java:129)
	at ghidra.framework.plugintool.Plugin.eventSent(Plugin.java:304)
	at ghidra.framework.plugintool.mgr.EventManager.sendEvents(EventManager.java:286)
	at ghidra.framework.plugintool.mgr.EventManager.lambda$new$3(EventManager.java:49)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at ghidra.framework.plugintool.mgr.EventManager.fireEvent(EventManager.java:216)
	at ghidra.framework.plugintool.PluginTool.firePluginEvent(PluginTool.java:537)
	at ghidra.framework.plugintool.Plugin.firePluginEvent(Plugin.java:467)
	at ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin.fireLocationEvent(DebuggerTraceManagerServicePlugin.java:780)
	at ghidra.app.plugin.core.debug.service.tracemgr.DebuggerTraceManagerServicePlugin.lambda$prepareViewAndFireEvent$12(DebuggerTraceManagerServicePlugin.java:774)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

---------------------------------------------------
Build Date: 2025-Nov-20 1719 CST
Ghidra Version: 12.1
Java Home: /usr/lib64/zulu-openjdk21
JVM Version: Azul Systems, Inc. 21.0.4
OS: Linux 6.12.16 amd64
Workstation: <redacted>

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions