Thanks Michael, we'll investigate the issue. By the way, bad performance with method breakpoints is a known problem and was alredy discussed in this mailing list. The problem is that JPDA API lacks possibility to filter debugging events for method breakpoins. As a result a lot of unnecesary events are dispatched to the debugger and this obviously slows down the execution since each event must be analysed. I'd avoid using method breakpoints unless they are really neccesary. Breakpoint conditions (depending on the condition, of course) may further slow down the execution since the expression is evaluated not in the debuggee but in IDEA, and this involves communication with the debugee (obviously not as efficient as evaluating the expression in the debuggee itself). However in the newer versions of JPDA (jdk 1.4) there should be support for expression eveluation and we will use it.
Best regards, Eugene Zhuravlev IntelliJ Software, http://www.intellij.com/ "Develop with pleasure!" ----- Original Message ----- From: "Michael Kirby" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: 09 November, 2001 3:04 PM Subject: Re: [Eap-list] Knack for freezing debugger > > > On 9 Nov 2001 at 13:35, Eugene Zhuravlev wrote: > > > Hi Michael, > > > > > Well. It is repeatable. I can cause IDEA to freeze every time if I set a > > breakpoint in > > > the debugger. Further, there semms to be some rather serious performance > > issues > > > > Could you please provide detailed information (a small code example is even > > better) of how to repeat the behaviour. What IDEA build are you using, what > > Build 514 & 515 > > is your system and JDK used to launch IDEA and the debuggee application? > > jdk 1.3.1 > > > Are you using remote or local debug session? > > Local > > > Do you launch your application with hotspot VM or classic VM? > > classic. (although I tried hotspot, but the performance issue never let me get to the > breakpoint. I'll try hotspot again today). > > > What types of breakpoints and how many of them have you added? > > The error occurs when I have a single line break-point. The slow-down problem > seems to be related the use of a conditional method breakpoint. This definitely > happens using both socket & shared memory, classic & hotspot. I tried all the > combinations, because I didnt' know that the reason idea wasn't debugging the > application was because of the breakpoint. > > Once I removed it, I got back to the normal problem of freezing the debugger when > it hit the breakpoint. > > > > > > happends, its the same thing. The AWT Thread hangs because its waiting > > on the > > > > Sun jdi call. > > > > Please send us the thread dump. > > I did earlier. I'll attach it again. > > Mike > --- > [EMAIL PROTECTED] > To obtain my PGP public key, mail "SEND PUB KEY" in the > subject to "[EMAIL PROTECTED]" > > > ---------------------------------------------------------------------------- ---- > Full thread dump: > > "Thread-2856" prio=7 tid=0x10ca9df8 nid=0x3d8 waiting on monitor [0x1693f000..0x > 1693fdbc] > at java.lang.Object.wait(Native Method) > at java.lang.Object.wait(Object.java:420) > at com.sun.tools.jdi.EventQueueImpl.removeUnfiltered(EventQueueImpl.java > :164) > at com.sun.tools.jdi.EventQueueImpl.remove(EventQueueImpl.java:81) > at com.sun.tools.jdi.EventQueueImpl.remove(EventQueueImpl.java:67) > at com.intellij.debugger.a.w.run(w.java:12) > > "JDI Target VM Interface" prio=7 tid=0x1099e008 nid=0xa94 runnable [0x168ff000.. > 0x168ffdbc] > at java.net.SocketInputStream.socketRead(Native Method) > at java.net.SocketInputStream.read(SocketInputStream.java:86) > at java.io.BufferedInputStream.fill(BufferedInputStream.java:186) > at java.io.BufferedInputStream.read(BufferedInputStream.java:204) > at com.sun.tools.jdi.SocketConnection.receivePacket(SocketConnection.jav > a:61) > at com.sun.tools.jdi.TargetVM.run(TargetVM.java:97) > at java.lang.Thread.run(Thread.java:484) > "JDI Internal Event Handler" prio=7 tid=0x10c246b0 nid=0x62c waiting on monitor > [0x168bf000..0x168bfdbc] > at java.lang.Object.wait(Native Method) > at java.lang.Object.wait(Object.java:420) > at com.sun.tools.jdi.EventQueueImpl.removeUnfiltered(EventQueueImpl.java > :164) > at com.sun.tools.jdi.EventQueueImpl.removeInternal(EventQueueImpl.java:1 > 00) > at com.sun.tools.jdi.InternalEventHandler.run(InternalEventHandler.java: > 37) > at java.lang.Thread.run(Thread.java:484) > > "Thread-2855" prio=10 tid=0x10c2e560 nid=0x8fc runnable [0x1687f000..0x1687fdbc] > > at java.io.FileInputStream.readBytes(Native Method) > at java.io.FileInputStream.read(FileInputStream.java:166) > at java.io.InputStreamReader.fill(InputStreamReader.java:173) > at java.io.InputStreamReader.read(InputStreamReader.java:249) > at java.io.BufferedReader.read(BufferedReader.java:157) > at com.intellij.execution.bv.run(bv.java:13) > > "Thread-2854" prio=10 tid=0x10baf3f0 nid=0x5bc runnable [0x1683f000..0x1683fdbc] > > at java.io.FileInputStream.readBytes(Native Method) > at java.io.FileInputStream.read(FileInputStream.java:183) > at java.io.BufferedInputStream.read1(BufferedInputStream.java:223) > at java.io.BufferedInputStream.read(BufferedInputStream.java:280) > at java.io.FilterInputStream.read(FilterInputStream.java:93) > at java.io.InputStreamReader.fill(InputStreamReader.java:173) > at java.io.InputStreamReader.read(InputStreamReader.java:249) > at java.io.BufferedReader.fill(BufferedReader.java:139) > at java.io.BufferedReader.read(BufferedReader.java:157) > at com.intellij.execution.bv.run(bv.java:13) > > "Thread-2850" prio=10 tid=0x10c27ec8 nid=0xad0 runnable [0x167ff000..0x167ffdbc] > > at java.io.FileInputStream.readBytes(Native Method) > at java.io.FileInputStream.read(FileInputStream.java:166) > at java.io.InputStreamReader.fill(InputStreamReader.java:173) > at java.io.InputStreamReader.read(InputStreamReader.java:249) > at java.io.BufferedReader.fill(BufferedReader.java:139) > at java.io.BufferedReader.read(BufferedReader.java:157) > at com.intellij.execution.bv.run(bv.java:13) > > "Thread-2849" prio=10 tid=0x10b9cd80 nid=0xfc runnable [0x167bf000..0x167bfdbc] > at java.io.FileInputStream.readBytes(Native Method) > at java.io.FileInputStream.read(FileInputStream.java:183) > at java.io.BufferedInputStream.read1(BufferedInputStream.java:223) > at java.io.BufferedInputStream.read(BufferedInputStream.java:280) > at java.io.FilterInputStream.read(FilterInputStream.java:93) > at java.io.InputStreamReader.fill(InputStreamReader.java:173) > at java.io.InputStreamReader.read(InputStreamReader.java:249) > at java.io.BufferedReader.fill(BufferedReader.java:139) > at java.io.BufferedReader.read(BufferedReader.java:157) > at com.intellij.execution.bv.run(bv.java:13) > > "Run External Process" prio=7 tid=0x10b098e8 nid=0xb04 runnable [0x1673f000..0x1 > 673fdbc] > at java.lang.Win32Process.waitFor(Native Method) > at com.intellij.execution.s.run(s.java:2) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10b9f210 nid=0x8f4 waiting on monitor [0x166ff0 > 00..0x166ffdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10a2fe40 nid=0x674 waiting on monitor [0x165bf0 > 00..0x165bfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x1060be10 nid=0x9c4 waiting on monitor [0x1633f0 > 00..0x1633fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10c2bbb0 nid=0x918 waiting on monitor [0x162bf0 > 00..0x162bfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10b486b8 nid=0x6e4 waiting on monitor [0x160bf0 > 00..0x160bfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10caf840 nid=0x9dc waiting on monitor [0x15f3f0 > 00..0x15f3fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10caf9a0 nid=0x67c waiting on monitor [0x15d3f0 > 00..0x15d3fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10c89dc8 nid=0x7b4 waiting on monitor [0x15bbf0 > 00..0x15bbfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x109ac6a8 nid=0xb8c waiting on monitor [0x15a3f0 > 00..0x15a3fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10ba3800 nid=0x744 waiting on monitor [0x1567f0 > 00..0x1567fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x1099e530 nid=0x378 waiting on monitor [0x1563f0 > 00..0x1563fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10c1fdc8 nid=0xad4 waiting on monitor [0x149bf0 > 00..0x149bfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10bbad68 nid=0x860 waiting on monitor [0x1437f0 > 00..0x1437fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10b27ad0 nid=0x678 waiting on monitor [0x1423f0 > 00..0x1423fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10aea1d0 nid=0x928 waiting on monitor [0x13fbf0 > 00..0x13fbfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x10b04b60 nid=0x6f8 waiting on monitor [0x13ebf0 > 00..0x13ebfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x1093bea8 nid=0x8ec waiting on monitor [0x13bbf0 > 00..0x13bbfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x1054be28 nid=0x900 waiting on monitor [0x134df0 > 00..0x134dfdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x1054bc18 nid=0x910 waiting on monitor [0x1349f0 > 00..0x1349fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "EditorCaretThread" prio=7 tid=0x1052d360 nid=0x920 waiting on monitor [0x1331f0 > 00..0x1331fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.editor.b.bf.run(bf.java:74) > at java.lang.Thread.run(Thread.java:484) > > "TimerQueue" daemon prio=5 tid=0x804a10 nid=0x91c runnable [0x1325f000..0x1325fd > bc] > at java.lang.Object.wait(Native Method) > at javax.swing.TimerQueue.run(TimerQueue.java:233) > at java.lang.Thread.run(Thread.java:484) > > "Thread-14" prio=5 tid=0x234c70 nid=0x5c8 waiting on monitor [0..0x6fb30] > > "Thread-7" prio=5 tid=0x1096a578 nid=0x92c waiting on monitor [0x130ff000..0x130 > ffdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.status.e.run(e.java:9) > at java.lang.Thread.run(Thread.java:484) > > "StoreRefreshStatusThread" prio=2 tid=0x10964968 nid=0x934 waiting on monitor [0 > x12f7f000..0x12f7fdbc] > at java.lang.Thread.sleep(Native Method) > at com.intellij.vfs.local.l.run(l.java:5) > > "WatchForChangesThread" prio=5 tid=0x10964440 nid=0x930 runnable [0x12f3f000..0x > 12f3fdbc] > at com.intellij.vfs.local.win32.FileWatcher.waitForChangeImpl(Native Met > hod) > at com.intellij.vfs.local.win32.FileWatcher.b(FileWatcher.java:4) > at com.intellij.vfs.local.m.run(m.java:9) > > "Screen Updater" prio=5 tid=0x1056a128 nid=0x938 waiting on monitor [0x1091f000. > .0x1091fdbc] > at java.lang.Object.wait(Native Method) > at java.lang.Object.wait(Object.java:420) > at sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:76) > at sun.awt.ScreenUpdater.run(ScreenUpdater.java:95) > > "AWT-Windows" prio=7 tid=0x1052a0b0 nid=0x944 runnable [0x1088f000..0x1088fdbc] > at sun.awt.windows.WToolkit.eventLoop(Native Method) > at sun.awt.windows.WToolkit.run(WToolkit.java:188) > at java.lang.Thread.run(Thread.java:484) > > "SunToolkit.PostEventQueue-0" prio=7 tid=0x10529630 nid=0x940 waiting on monitor > [0x1084f000..0x1084fdbc] > at java.lang.Object.wait(Native Method) > at java.lang.Object.wait(Object.java:420) > at sun.awt.PostEventQueue.run(SunToolkit.java:491) > > "AWT-EventQueue-0" prio=5 tid=0x10501490 nid=0x8c0 waiting on monitor [0x1080f00 > 0..0x1080fdbc] > at java.lang.Object.wait(Native Method) > at java.lang.Object.wait(Object.java:420) > at com.sun.tools.jdi.TargetVM.waitForReply(TargetVM.java:267) > at com.sun.tools.jdi.VirtualMachineImpl.waitForTargetReply(VirtualMachin > eImpl.java:695) > at com.sun.tools.jdi.PacketStream.waitForReply(PacketStream.java:54) > at com.sun.tools.jdi.JDWP$StackFrame$GetValues.waitForReply(JDWP.java:51 > 59) > at com.sun.tools.jdi.StackFrameImpl.getValues(StackFrameImpl.java:222) > at com.sun.tools.jdi.StackFrameImpl.getValue(StackFrameImpl.java:188) > at com.intellij.debugger.ui.impl.a.n.<init>(n.java:4) > at com.intellij.debugger.ui.impl.a.p.a(p.java:75) > at com.intellij.debugger.ui.impl.h.e(h.java:85) > at com.intellij.debugger.ui.impl.h.h(h.java:55) > at com.intellij.debugger.ui.impl.cj.a(cj.java:208) > at com.intellij.debugger.ui.impl.cj.a(cj.java:202) > at com.intellij.debugger.ui.impl.bx.c(bx.java:1) > at com.intellij.util.cm.run(cm.java:2) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:337) > at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh > read.java:131) > at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre > ad.java:98) > at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:85) > > "Signal Dispatcher" daemon prio=10 tid=0x811b78 nid=0x7b0 waiting on monitor [0. > .0] > > "Finalizer" daemon prio=9 tid=0x10410cd0 nid=0x794 waiting on monitor [0x106cf00 > 0..0x106cfdbc] > at java.lang.Object.wait(Native Method) > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:108) > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:123) > at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:162) > > "Reference Handler" daemon prio=10 tid=0x239d58 nid=0xb90 waiting on monitor [0x > 1068f000..0x1068fdbc] > at java.lang.Object.wait(Native Method) > at java.lang.Object.wait(Object.java:420) > at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:110) > > "VM Thread" prio=5 tid=0x7be4a8 nid=0x9c0 runnable > > "VM Periodic Task Thread" prio=10 tid=0x856908 nid=0x774 waiting on monitor > "Suspend Checker Thread" prio=10 tid=0x856e20 nid=0x78c runnable > _______________________________________________ Eap-list mailing list [EMAIL PROTECTED] http://www.intellij.com/mailman/listinfo/eap-list
