Crash while stepping through "Got IO exception from Virtual Machine"
I was stepping through some high-order functions, maybe I pressed step twice. I got two dialogs with the following stack traces and messages:
An internal error occurred during: "has children update".
and
An internal error occurred during: "Label Job".
An internal error occurred during: "has children update".
com.sun.jdi.VMDisconnectedException: Got IOException from Virtual Machine
at org.eclipse.jdi.internal.connect.PacketSendManager.sendPacket(PacketSendManager.java:80)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:173)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:208)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:223)
at org.eclipse.jdi.internal.ObjectReferenceImpl.referenceType(ObjectReferenceImpl.java:477)
at scala.tools.eclipse.debug.model.ScalaObjectReference.hasVariables(ScalaValue.scala:125)
at org.eclipse.debug.internal.ui.model.elements.VariableContentProvider.hasChildren(VariableContentProvider.java:62)
at org.eclipse.debug.internal.ui.model.elements.ElementContentProvider.updateHasChildren(ElementContentProvider.java:223)
at org.eclipse.debug.internal.ui.model.elements.ElementContentProvider$3.run(ElementContentProvider.java:200)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
and
An internal error occurred during: "Label Job".
com.sun.jdi.VMDisconnectedException: Got IOException from Virtual Machine
at org.eclipse.jdi.internal.connect.PacketSendManager.sendPacket(PacketSendManager.java:80)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:173)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:208)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:223)
at org.eclipse.jdi.internal.ObjectReferenceImpl.referenceType(ObjectReferenceImpl.java:477)
at scala.tools.eclipse.debug.model.ScalaObjectReference.getValueString(ScalaValue.scala:112)
at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getValueText(VariableLabelProvider.java:166)
at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getColumnText(VariableLabelProvider.java:112)
at org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider.getLabel(VariableLabelProvider.java:92)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.getLabel(ElementLabelProvider.java:312)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider.retrieveLabel(ElementLabelProvider.java:215)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelUpdater.run(ElementLabelProvider.java:160)
at org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider$LabelJob.run(ElementLabelProvider.java:74)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Leave a comment
on 2012-10-17 07:57 *
By Mirco Dotta
This also happens in our nightlies: e.g., https://jenkins.scala-ide.org:8496/jenkins/job/scala-ide-nightly-master-2.9.x/625/console
2012-10-17 09:53:39,242 INFO [main] - ScalaSourceFile - [debug] buildStructure for L/debug/src/stepping/ForComprehensionListIntOptimized.scala (/localhome/jenkinside/workspace/scala-ide-nightly-master-2.9.x/scala-ide/org.scala-ide.sdt.debug.tests/target/work/data/debug/src/stepping/ForComprehensionListIntOptimized.scala)
scala.tools.eclipse.debug.BreakpointSupportActor@333f262d: caught com.sun.jdi.VMDisconnectedException: Got IOException from Virtual Machine
com.sun.jdi.VMDisconnectedException: Got IOException from Virtual Machine
at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:165)
at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:180)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:177)
at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:208)
at org.eclipse.jdi.internal.request.EventRequestImpl.disable(EventRequestImpl.java:199)
at org.eclipse.jdi.internal.request.EventRequestManagerImpl.deleteEventRequest(EventRequestManagerImpl.java:376)
at scala.tools.eclipse.debug.BreakpointSupportActor$$anonfun$scala$tools$eclipse$debug$BreakpointSupportActor$$dispose$1.apply(BreakpointSupport.scala:156)
at scala.tools.eclipse.debug.BreakpointSupportActor$$anonfun$scala$tools$eclipse$debug$BreakpointSupportActor$$dispose$1.apply(BreakpointSupport.scala:155)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:76)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30)
at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:44)
at scala.tools.eclipse.debug.BreakpointSupportActor.scala$tools$eclipse$debug$BreakpointSupportActor$$dispose(BreakpointSupport.scala:155)
at scala.tools.eclipse.debug.BreakpointSupportActor$$anonfun$act$1$$anonfun$apply$4.apply(BreakpointSupport.scala:142)
at scala.tools.eclipse.debug.BreakpointSupportActor$$anonfun$act$1$$anonfun$apply$4.apply(BreakpointSupport.scala:129)
at scala.actors.ReactorTask.run(ReactorTask.scala:31)
at scala.actors.Reactor$class.resumeReceiver(Reactor.scala:129)
at scala.tools.eclipse.debug.BreakpointSupportActor.scala$actors$ReplyReactor$$super$resumeReceiver(BreakpointSupport.scala:123)
at scala.actors.ReplyReactor$class.resumeReceiver(ReplyReactor.scala:68)
at scala.tools.eclipse.debug.BreakpointSupportActor.resumeReceiver(BreakpointSupport.scala:123)
at scala.actors.Actor$class.searchMailbox(Actor.scala:500)
at scala.tools.eclipse.debug.BreakpointSupportActor.searchMailbox(BreakpointSupport.scala:123)
at scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(Reactor.scala:117)
at scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply(Reactor.scala:114)
at scala.actors.Reactor$$anonfun$startSearch$1$$anonfun$apply$mcV$sp$1.apply(Reactor.scala:114)
at scala.actors.ReactorTask.run(ReactorTask.scala:33)
at scala.concurrent.forkjoin.ForkJoinPool$AdaptedRunnable.exec(ForkJoinPool.java:611)
at scala.concurrent.forkjoin.ForkJoinTask.quietlyExec(ForkJoinTask.java:422)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.mainLoop(ForkJoinWorkerThread.java:340)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:325)
on 2012-10-22 12:35 *
By Mirco Dotta
Assigned to set to Mirco Dotta
Milestone changed from Helium to Current
on 2012-10-24 10:21 *
By Iulian Dragos
The stack trace looks different though.
(In scala-ide:268edc29640d5185753b96c824fc620ce5ad3fba) Fix #1001233 - Graceful termination of debug sessions
Major refactoring of actor code in debugger
Extracted a common superclass (``BaseDebuggerActor``) for all actors defined in
the debugger module. This avoids duplication and makes sure that actors
terminates consistently. This base class for actors provides a number of
interesting functionalities:
because it generates a lot of noise. Before enabling it, we need to add a TRACE
log level in the logger (I'll open a ticket for this).
actor will process messages accordingly to its `behavior` implementation. If
an `Exit` or `PoisonPill` message is processed by `this` actor, the actor is
guaranteed to execute `preExit` before terminating.
Last, I have also added a number of FIXMEs for some problematic code that could
cause the debug session to freeze. I'll be opening tickets for each one of
these issues, so that we don't forget to fix them by the final V2.1 release
(Re #1001307, Re #1001308, Re #1001310, Re #1001311).
Branch: master
Major refactoring of actor code in debugger
Extracted a common superclass (``BaseDebuggerActor``) for all actors defined in
the debugger module. This avoids duplication and makes sure that actors
terminates consistently. This base class for actors provides a number of
interesting functionalities:
- Automatic logging of all messages processed by the actor. This can be quite
because it generates a lot of noise. Before enabling it, we need to add a TRACE
log level in the logger (I'll open a ticket for this).
- Stackable behaviors. By calling `become/unbecome` an actor can easily
- Cleaner actor's life-cylce. Basically, when starting an actor, `postStart`
actor will process messages accordingly to its `behavior` implementation. If
an `Exit` or `PoisonPill` message is processed by `this` actor, the actor is
guaranteed to execute `preExit` before terminating.
Last, I have also added a number of FIXMEs for some problematic code that could
cause the debug session to freeze. I'll be opening tickets for each one of
these issues, so that we don't forget to fix them by the final V2.1 release
(Re #1001307, Re #1001308, Re #1001310, Re #1001311).
Branch: master
on 2012-11-04 14:26 *
By Mirco Dotta
(In scala-ide:268edc29640d5185753b96c824fc620ce5ad3fba) Fix #1001233 - Graceful termination of debug sessions
Major refactoring of actor code in debugger
Extracted a common superclass (``BaseDebuggerActor``) for all actors defined in
the debugger module. This avoids duplication and makes sure that actors
terminates consistently. This base class for actors provides a number of
interesting functionalities:
because it generates a lot of noise. Before enabling it, we need to add a TRACE
log level in the logger (I'll open a ticket for this).
actor will process messages accordingly to its `behavior` implementation. If
an `Exit` or `PoisonPill` message is processed by `this` actor, the actor is
guaranteed to execute `preExit` before terminating.
Last, I have also added a number of FIXMEs for some problematic code that could
cause the debug session to freeze. I'll be opening tickets for each one of
these issues, so that we don't forget to fix them by the final V2.1 release
(Re #1001307, Re #1001308, Re #1001310, Re #1001311).
Branch: platform/juno
Major refactoring of actor code in debugger
Extracted a common superclass (``BaseDebuggerActor``) for all actors defined in
the debugger module. This avoids duplication and makes sure that actors
terminates consistently. This base class for actors provides a number of
interesting functionalities:
- Automatic logging of all messages processed by the actor. This can be quite
because it generates a lot of noise. Before enabling it, we need to add a TRACE
log level in the logger (I'll open a ticket for this).
- Stackable behaviors. By calling `become/unbecome` an actor can easily
- Cleaner actor's life-cylce. Basically, when starting an actor, `postStart`
actor will process messages accordingly to its `behavior` implementation. If
an `Exit` or `PoisonPill` message is processed by `this` actor, the actor is
guaranteed to execute `preExit` before terminating.
Last, I have also added a number of FIXMEs for some problematic code that could
cause the debug session to freeze. I'll be opening tickets for each one of
these issues, so that we don't forget to fix them by the final V2.1 release
(Re #1001307, Re #1001308, Re #1001310, Re #1001311).
Branch: platform/juno