Invisible Deadlock caused by HashMap in AppContext

Hi All,
     I have a strange behaviour where the AppContext.get() is waiting for lock of a HashMap that is not locked by any other task. This freezes my GUI because the AWT-EventQueue wants to stop a javax.swing.Timer that is locked by the TimerQueue Thread that is waiting for the HashMap (see dump beneath).
I have no idea how to catch problem. Am I am doing something wrong with the timer? Any hint how I can get more information about the reason? Any workaround?
Our application uses many trees and tables in some Frames that are updated via javax.swing.Timer because the burst load is to heave for an event driven update. The App must run all the time because it monitors network devices. A frozen GUI is the worst thing that could hapen to our App because normally there are no user actions and the user will not be aware of this. The App is running on serveral linux machines (debian, redhead, suse with different versions) with serveral JDK 1.4.xxx. Every where the same.
Can someone help me with this matter?
Thanks.
Peter
Here the full thread dump:
Full thread dump Java HotSpot(TM) Client VM (1.4.2_04-b05 mixed mode):
"JDWP Command Reader" daemon prio=1 tid=0x0838c3d8 nid=0x4e33 runnable [0..0]
"Thread-2" prio=1 tid=0x08277ce0 nid=0x4e33 runnable [5a148000..5a1488bc]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2133)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2423)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2433)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1245)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at com.atecom.lib.network.impl.BlockingSocketThread.run(BlockingSocketThread.java:51)
"MemoryLabel" prio=1 tid=0x0828b8f0 nid=0x4e33 waiting on condition [599de000..599de8bc]
at java.lang.Thread.sleep(Native Method)
at com.atecom.lib.util.Misc.sleep(Misc.java:773)
at com.atecom.maya.client.gui.common.JButtonMemory$1.run(JButtonMemory.java:69)
"TimerQueue" daemon prio=1 tid=0x0835a228 nid=0x4e33 waiting for monitor entry [5a037000..5a0378bc]
at sun.awt.AppContext.get(AppContext.java:542)
- waiting to lock <0x45b687b0> (a java.util.HashMap)
at sun.awt.SunToolkit.getSystemEventQueueImplPP(SunToolkit.java:543)
at sun.awt.SunToolkit.getSystemEventQueueImpl(SunToolkit.java:537)
at java.awt.Toolkit.getEventQueue(Toolkit.java:1519)
at java.awt.EventQueue.invokeLater(EventQueue.java:792)
at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1170)
at javax.swing.Timer.post(Timer.java:538)
- locked <0x45eaade0> (a javax.swing.Timer)
at javax.swing.TimerQueue.postExpiredTimers(TimerQueue.java:193)
- locked <0x45be7528> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(TimerQueue.java:229)
- locked <0x45be7528> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Thread.java:534)
"Java2D Disposer" daemon prio=1 tid=0x08285b58 nid=0x4e33 in Object.wait() [59eff000..59eff8bc]
at java.lang.Object.wait(Native Method)
- waiting on <0x45ba3b58> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
- locked <0x45ba3b58> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at sun.java2d.Disposer.run(Disposer.java:100)
at java.lang.Thread.run(Thread.java:534)
"AWT-EventQueue-0" prio=1 tid=0x0819d2d8 nid=0x4e33 waiting for monitor entry [59e7f000..59e7f8bc]
at javax.swing.TimerQueue.removeTimer(TimerQueue.java:135)
- waiting to lock <0x45be7528> (a javax.swing.TimerQueue)
at javax.swing.Timer.stop(Timer.java:509)
at javax.swing.ToolTipManager.initiateToolTip(ToolTipManager.java:468)
at javax.swing.ToolTipManager.mouseEntered(ToolTipManager.java:458)
at java.awt.Component.processMouseEvent(Component.java:5109)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:3323)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3180)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
"Maya Memory Watchdog" prio=1 tid=0x0818d250 nid=0x4e33 waiting on condition [59dff000..59dff8bc]
at java.lang.Thread.sleep(Native Method)
at com.atecom.lib.util.Misc.sleep(Misc.java:773)
at com.atecom.maya.client.ClientApplication$3.run(ClientApplication.java:338)
"MayaWorkerThread" prio=1 tid=0x0818cf48 nid=0x4e33 in Object.wait() [59d7f000..59d7f8bc]
at java.lang.Object.wait(Native Method)
at com.atecom.lib.util.WorkerThread.run(WorkerThread.java:72)
- locked <0x45b70928> (a com.atecom.maya.client.MayaWorkerThread)
"Thread-1" prio=1 tid=0x0816afa0 nid=0x4e33 runnable [59cff000..59cff8bc]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.DataInputStream.readInt(DataInputStream.java:443)
at com.atecom.maya.protocol.AlarmConverter.readAlarm(AlarmConverter.java:98)
at com.atecom.maya.client.alarmserver.ConnectionAlarmServer.run(ConnectionAlarmServer.java:193)
at java.lang.Thread.run(Thread.java:534)
"AWT-Motif" daemon prio=1 tid=0x081892d0 nid=0x4e33 runnable [59c7f000..59c7f8bc]
at sun.awt.motif.MToolkit.run(Native Method)
at java.lang.Thread.run(Thread.java:534)
"AWT-Shutdown" prio=1 tid=0x08188f30 nid=0x4e33 in Object.wait() [59aff000..59aff8bc]
at java.lang.Object.wait(Native Method)
- waiting on <0x45b3ee78> (a java.lang.Object)
at java.lang.Object.wait(Object.java:429)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
- locked <0x45b3ee78> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:534)
"Ping Thread" prio=1 tid=0x08140480 nid=0x4e33 waiting on condition [59a5e000..59a5e8bc]
at java.lang.Thread.sleep(Native Method)
at com.atecom.lib.util.Misc.sleep(Misc.java:773)
at com.atecom.maya.client.adminserver.PingThread.run(PingThread.java:70)
"DestroyJavaVM" prio=1 tid=0x080529e8 nid=0x4e33 waiting on condition [0..bfffbe84]
"LogLevelThread" prio=1 tid=0x0813dc48 nid=0x4e33 in Object.wait() [593ca000..593ca8bc]
at java.lang.Object.wait(Native Method)
- waiting on <0x45b3a0a8> (a de.qfs.lib.log.LogLevels$LogLevelThread)
at java.lang.Object.wait(Object.java:429)
at de.qfs.lib.log.LogLevels$LogLevelThread.run(LogLevels.java:869)
- locked <0x45b3a0a8> (a de.qfs.lib.log.LogLevels$LogLevelThread)
"Signal Dispatcher" daemon prio=1 tid=0x080909e8 nid=0x4e33 waiting on condition [0..0]
"JDWP Event Helper Thread" daemon prio=1 tid=0x0808f228 nid=0x4e33 runnable [0..0]
"JDWP Transport Listener: dt_socket" daemon prio=1 tid=0x0808e6f0 nid=0x4e33 runnable [0..58b70610]
"Finalizer" daemon prio=1 tid=0x08089f20 nid=0x4e33 in Object.wait() [58a08000..58a088bc]
at java.lang.Object.wait(Native Method)
- waiting on <0x45b1afd8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
- locked <0x45b1afd8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=1 tid=0x08088408 nid=0x4e33 in Object.wait() [58988000..589888bc]
at java.lang.Object.wait(Native Method)
- waiting on <0x45b1aff8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:429)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
- locked <0x45b1aff8> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=1 tid=0x08087108 nid=0x4e33 runnable
"VM Periodic Task Thread" prio=1 tid=0x08093528 nid=0x4e33 waiting on condition
"Suspend Checker Thread" prio=1 tid=0x0808ff30 nid=0x4e33 runnable

I have no idea how to catch problem. Am I am doing
something wrong with the timer? Any hint how I can get
more information about the reason? Any workaround?As you noted, there isn't an obvious deadlock (although I suppose one could be hidden in native code, the thread dump should show all deadlocks separate from the stack traces).
However, there may be some lock contention between threads. In particular, "TimerQueue", which uses the event thread to execute timed actions, and "AWT-EventQueue-0", which uses timers to control tooltip popups. The things that would drive this are (1) the rate at which new timers are added to the queue, and (2) the rate at which existing timers fire.
If you're using a very short timer to update your display (say every 50 ms), then I'd suggest increasing that time -- even 100 ms might give dramatically better results.
Also, take a series of thread dumps over a few seconds time. You should see those threads executing different pieces of code -- the event thread, in particular, should usually be waiting for another event on the queue. If is isn't, then you should start to worry that you've got an infinite loop happening with the event queue as mediator.

Similar Messages

  • Invisible Deadlock

    Hi all,
         I have a strange behaviour where the AppContext.get() is waiting for lock of a HashMap that is not locked by any other task. This freezes my GUI because the AWT-EventQueue wants to stop a javax.swing.Timer that is locked by the TimerQueue Thread that is waiting for the HashMap.
    I have no idea how to catch problem. Am I am doing something wrong with the timer? Any hint how I can get more information about the reason? Any workaround?
    Our application uses many trees and tables in some Frames that are updated via javax.swing.Timer because the burst load is to heave for an event driven update. The App must run all the time because it monitors network devices. A frozen GUI is the worst thing that could hapen to our App because normally there are no user actions and the user will not be aware of this. The App is running on serveral linux machines (debian, redhead, suse with different versions) with serveral JDK 1.4.xxx. Every where the same.
    Can someone help me with this matter?
    Thanks.
    Peter
    Full thread dump Java HotSpot(TM) Client VM (1.4.2_04-b05 mixed mode):
    "JDWP Command Reader" daemon prio=1 tid=0x0838c3d8 nid=0x4e33 runnable [0..0]
    "Thread-2" prio=1 tid=0x08277ce0 nid=0x4e33 runnable [5a148000..5a1488bc]
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.net.SocketInputStream.read(SocketInputStream.java:182)
    at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2133)
    at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2423)
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2433)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1245)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
    at com.atecom.lib.network.impl.BlockingSocketThread.run(BlockingSocketThread.java:51)
    "MemoryLabel" prio=1 tid=0x0828b8f0 nid=0x4e33 waiting on condition [599de000..599de8bc]
    at java.lang.Thread.sleep(Native Method)
    at com.atecom.lib.util.Misc.sleep(Misc.java:773)
    at com.atecom.maya.client.gui.common.JButtonMemory$1.run(JButtonMemory.java:69)
    "TimerQueue" daemon prio=1 tid=0x0835a228 nid=0x4e33 waiting for monitor entry [5a037000..5a0378bc]
    at sun.awt.AppContext.get(AppContext.java:542)
    - waiting to lock <0x45b687b0> (a java.util.HashMap)
    at sun.awt.SunToolkit.getSystemEventQueueImplPP(SunToolkit.java:543)
    at sun.awt.SunToolkit.getSystemEventQueueImpl(SunToolkit.java:537)
    at java.awt.Toolkit.getEventQueue(Toolkit.java:1519)
    at java.awt.EventQueue.invokeLater(EventQueue.java:792)
    at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1170)
    at javax.swing.Timer.post(Timer.java:538)
    - locked <0x45eaade0> (a javax.swing.Timer)
    at javax.swing.TimerQueue.postExpiredTimers(TimerQueue.java:193)
    - locked <0x45be7528> (a javax.swing.TimerQueue)
    at javax.swing.TimerQueue.run(TimerQueue.java:229)
    - locked <0x45be7528> (a javax.swing.TimerQueue)
    at java.lang.Thread.run(Thread.java:534)
    "Java2D Disposer" daemon prio=1 tid=0x08285b58 nid=0x4e33 in Object.wait() [59eff000..59eff8bc]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x45ba3b58> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
    - locked <0x45ba3b58> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
    at sun.java2d.Disposer.run(Disposer.java:100)
    at java.lang.Thread.run(Thread.java:534)
    "AWT-EventQueue-0" prio=1 tid=0x0819d2d8 nid=0x4e33 waiting for monitor entry [59e7f000..59e7f8bc]
    at javax.swing.TimerQueue.removeTimer(TimerQueue.java:135)
    - waiting to lock <0x45be7528> (a javax.swing.TimerQueue)
    at javax.swing.Timer.stop(Timer.java:509)
    at javax.swing.ToolTipManager.initiateToolTip(ToolTipManager.java:468)
    at javax.swing.ToolTipManager.mouseEntered(ToolTipManager.java:458)
    at java.awt.Component.processMouseEvent(Component.java:5109)
    at java.awt.Component.processEvent(Component.java:4897)
    at java.awt.Container.processEvent(Container.java:1569)
    at java.awt.Component.dispatchEventImpl(Component.java:3615)
    at java.awt.Container.dispatchEventImpl(Container.java:1627)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
    at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:3323)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3180)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
    at java.awt.Container.dispatchEventImpl(Container.java:1613)
    at java.awt.Window.dispatchEventImpl(Window.java:1606)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    "Maya Memory Watchdog" prio=1 tid=0x0818d250 nid=0x4e33 waiting on condition [59dff000..59dff8bc]
    at java.lang.Thread.sleep(Native Method)
    at com.atecom.lib.util.Misc.sleep(Misc.java:773)
    at com.atecom.maya.client.ClientApplication$3.run(ClientApplication.java:338)
    "MayaWorkerThread" prio=1 tid=0x0818cf48 nid=0x4e33 in Object.wait() [59d7f000..59d7f8bc]
    at java.lang.Object.wait(Native Method)
    at com.atecom.lib.util.WorkerThread.run(WorkerThread.java:72)
    - locked <0x45b70928> (a com.atecom.maya.client.MayaWorkerThread)
    "Thread-1" prio=1 tid=0x0816afa0 nid=0x4e33 runnable [59cff000..59cff8bc]
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.net.SocketInputStream.read(SocketInputStream.java:182)
    at java.io.DataInputStream.readInt(DataInputStream.java:443)
    at com.atecom.maya.protocol.AlarmConverter.readAlarm(AlarmConverter.java:98)
    at com.atecom.maya.client.alarmserver.ConnectionAlarmServer.run(ConnectionAlarmServer.java:193)
    at java.lang.Thread.run(Thread.java:534)
    "AWT-Motif" daemon prio=1 tid=0x081892d0 nid=0x4e33 runnable [59c7f000..59c7f8bc]
    at sun.awt.motif.MToolkit.run(Native Method)
    at java.lang.Thread.run(Thread.java:534)
    "AWT-Shutdown" prio=1 tid=0x08188f30 nid=0x4e33 in Object.wait() [59aff000..59aff8bc]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x45b3ee78> (a java.lang.Object)
    at java.lang.Object.wait(Object.java:429)
    at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
    - locked <0x45b3ee78> (a java.lang.Object)
    at java.lang.Thread.run(Thread.java:534)
    "Ping Thread" prio=1 tid=0x08140480 nid=0x4e33 waiting on condition [59a5e000..59a5e8bc]
    at java.lang.Thread.sleep(Native Method)
    at com.atecom.lib.util.Misc.sleep(Misc.java:773)
    at com.atecom.maya.client.adminserver.PingThread.run(PingThread.java:70)
    "DestroyJavaVM" prio=1 tid=0x080529e8 nid=0x4e33 waiting on condition [0..bfffbe84]
    "LogLevelThread" prio=1 tid=0x0813dc48 nid=0x4e33 in Object.wait() [593ca000..593ca8bc]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x45b3a0a8> (a de.qfs.lib.log.LogLevels$LogLevelThread)
    at java.lang.Object.wait(Object.java:429)
    at de.qfs.lib.log.LogLevels$LogLevelThread.run(LogLevels.java:869)
    - locked <0x45b3a0a8> (a de.qfs.lib.log.LogLevels$LogLevelThread)
    "Signal Dispatcher" daemon prio=1 tid=0x080909e8 nid=0x4e33 waiting on condition [0..0]
    "JDWP Event Helper Thread" daemon prio=1 tid=0x0808f228 nid=0x4e33 runnable [0..0]
    "JDWP Transport Listener: dt_socket" daemon prio=1 tid=0x0808e6f0 nid=0x4e33 runnable [0..58b70610]
    "Finalizer" daemon prio=1 tid=0x08089f20 nid=0x4e33 in Object.wait() [58a08000..58a088bc]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x45b1afd8> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
    - locked <0x45b1afd8> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
    "Reference Handler" daemon prio=1 tid=0x08088408 nid=0x4e33 in Object.wait() [58988000..589888bc]
    at java.lang.Object.wait(Native Method)
    - waiting on <0x45b1aff8> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:429)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
    - locked <0x45b1aff8> (a java.lang.ref.Reference$Lock)
    "VM Thread" prio=1 tid=0x08087108 nid=0x4e33 runnable
    "VM Periodic Task Thread" prio=1 tid=0x08093528 nid=0x4e33 waiting on condition
    "Suspend Checker Thread" prio=1 tid=0x0808ff30 nid=0x4e33 runnable

    This doesn't look like a deadlock, AppContext table lock(that HashMap) is designed to be taken last, and there is no possibility for it to deadlock with anything.
    This is either a HotSpot problem, or some thread is taking all CPU time so this looks like a deadlock while the application is just busy.
    Try making several stack trace dumps - what do they show? Try running application with -Xprof:cpu, who is consuming CPU time at that moment?

  • Deadlock - caused by my application or another?

    Hi,
    I appreciate that Profiler output is required to diagnose deadlocks but this is a general question and I don't currently have the ability to set profiler flags on a customer's SQL Server so...
    I have scheduled tasks which run overnight when the target SQL Server database is unused.  They are run by my Windows application which connects to SQL Sever using ADO / a database connection string.  My application is not multi-threaded so I'm
    positive that each SQL command is issued after the other has returned and not in parallel.  For better or worse (I expect I'll get hammered for this!) I'm running the whole process as a single transaction, which is not best practice but means that if
    anything fails I can easily roll the whole database back to its start point, which is the desired functionality).
    At seemingly random points during the transaction, and only in about one in 20 (or more) runs I'm getting deadlocks reported, such as:
    "CADORecordset Error
    Code = 80004005
    Code meaning = Unspecified error
    Source = Microsoft OLE DB Provider for SQL Server
    Description = Transaction (Process ID 51) was deadlocked on thread | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction."
    I'm assuming this error is caused by process A locking record 1 and waiting for record 2 while process B concurrently locks record 2 and is waiting for record 1.
    My application uses a number of different SQL statement(SELECT, UPDATE, MERGE) and records the SQL it issued that failed with this error so I know there is no consistent SQL statement which causes it.  Also, this problem only occurs in one customer.
     All other customers do not appear to suffer the problem.
    Does this mean the deadlock must (almost certainly) be caused by another process (i.e. application) running on the server?  Or is my assumption incorrect, the assumption being "if my application issues SQL commands sequentially then how can it
    cause a deadlock?"?
    Thanks!
    Pete
    Creator of the Software Update Wizard... add update over the web to your app with a single line of code!

    Could be. .....
    Regards, Ashwin Menon My Blog - http:\\sqllearnings.com
    Are you saying that it's definitely possible for my application, which is issuing sequential SQL statements within a transaction, to cause a deadlock?  I've already spent some time reading up on deadlocks and perhaps I should be wiser by now but that's
    the knub of what I was hoping to elucidate from this question - i.e. can the following create a very occasional deadlock (or is it impossible because each statement is executed sequentially?):
    Connect to SQL Server database.
    On same connection, begin transaction, issue statement 1, followed by issue statement 2 (when ADO Recordset::Open() has returned for statement 1, etc. through to statement n and then commit transaction.
    Obviously I have not explicitly locked anything within the above - it's just a series of SELECT, INSERT, UPDATE and MERGE statements.
    I understand that setting trace flags can help understand the causes of deadlocks but as this is on a customer's server I am keen to avoid having to ask them to do this.  Also, it only deadlocks once every few weeks so setting a trace flag for this
    duration is unattractive.  That's why I posted the question - to understand whether, if the deadlocks occur infrequently and on different statements I can eliminate my application from being the culprit.
    Thanks for taking the time to respond to my question. Appreciated.
    Pete
    Creator of the Software Update Wizard... add update over the web to your app with a single line of code!

  • Will SQL Deadlocks cause a whole workflow to delete

    Here is the deadlock:
    Unknown SQL Exception 1205 occurred. Additional error information from SQL Server is included below.  Transaction (Process ID 396) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
    At the same time user was trying to start a workflow and it locks up on them. They log out of sharepoint go back in and attempt to restart the workflow.
    Its gone. This is the only clue found so far to its disappearance.
    My thinking is that a deadlock SQL process cannot remove a process that is coded in sharepoint, and it is more likely that something/someone else is deleting this workflow at the same time this user is attempting to run it.
    What do you think?
    Paul

    Will these SQL statements drop entire workflows out of sharepoint:
    WSS_SiteContent_CORPTAXWorkSpace_CSC_ASP9.dbo.proc_DropWorkflow
    65
    DELETE   FROM
    dbo.ScheduledWorkItems
                WHERE
    Type = CAST   (N'BDEADF09-C265-11d0-BCED-00A0C90AB50F' as uniqueidentifier) AND
    ParentId = @ListId   AND
    SiteId = @SiteId   AND
    BatchId =   @WorkflowInstanceId     
    WSS_SiteContent_CORPTAXWorkSpace_CSC_ASP9.dbo.proc_AutoDropWorkflows
    44
    EXEC   proc_DropWorkflow
    @WorkflowInstanceId,  
    @SiteId,
    @WebId,
    @ListId,
    @RequestGuid   OUTPUT     
    WSS_SiteContent_CORPTAXWorkSpace_CSC_ASP9.dbo.proc_DropWorkflowAssociation
    42
    EXEC @AllDeleted =   proc_AutoDropWorkflows
    @SiteId,
    NULL,
    @ListId,
    NULL,
    @Id,
    NULL,
    1 ,
    200,
    @RequestGuid   OUTPUT     
    Paul

  • Global Enqueue Deadlock causing 404 errors?

    I am having a real problem with only certain pages in my application. I can open, edit, and run these pages from the application developer, but when my users go to try and use them, they get a 404 Page Not Found error. One page is a popup that loads from a sub-form. The user clicks on a link and the entry pops-up for them to complete, save, and close. The page pops up, but when they try to use the Save Button to complete the entry, they immediately get the 404 error.
    On another, there is a link to a page where the page loads automatically based on default parameters. If they want to rerun the report, clicking on the Submit button to rerun the page immediately generates the error.
    I have looked in the DB alert log and I can see several references to the following error:
    Wed Nov 04 06:06:21 2009
    Global Enqueue Services Deadlock detected. More info in file
    e:\oracle\10gr2\admin\ts\bdump\ts1_lmd0_724.trc.
    Are the two even related? Is there some other explanation or fix to try?
    I'm running Application Express 3.2.0.00.27 on Windows 2003 R2 using Oracle Database 10.2.0.2.
    This ones got me hopelessly confused. I've submitted an SR under Metalink, but I thought maybe someone here would have an idea as well.

    This one came out of an error log:
    : /pls/htmldb/f HTTP-503 ORA-12528
    [Mon Nov 02 20:11:48 2009] [error] [client 192.168.168.90] [ecid: 1257217908:192.168.168.201:3824:3992:8,0] mod_plsql
    (seeing these starting about 2 days ago - coincidentally the same time I rebooted the server to try and clear up the GEQ messages...
    Now I'm seeing these (also in error log):
    [Thu Nov 05 07:30:22 2009] [error] [client 192.168.120.53] [ecid: 1257431422:192.168.168.201:3824:4052:2078,0] mod_plsql: /pls/htmldb/wwv_flow.accept HTTP-404 ORA-06550: line 22, column 3:\nPLS-00306: wrong number or types of arguments in call to 'ACCEPT'\nORA-06550: line 22, column 3:\nPL/SQL: Statement ignored\n
    Access log just looks like a ton of request/answer information regarding session traffic. Didn't see anything out of ordinary on cursory inspection.

  • Cross references invisible space causing unwanted wrapping

    I have a document where I have created an index of meticulously mapped the page numbers using cross references. However I have a massive problem where the cross references take up WAY more space than they should.
    Have a look at the following screen shot:
    Notice how the numbers could easily fit on one line, however they start wrapping way before they come in contact with the other side of the text frame.
    This is very frustrating!!! Can anybody tell me why this is happening and how I can fix it?
    Thanks.

    This is very frustrating!!! Can anybody tell me why this is happening and how I can fix it?
    No, and yes.
    No, I have no idea why the normal paragraph composer does this. I've reported it as a bug in the past.
    Yes, if you switch to the World-Ready Composer, the bug goes away - the WRC doesn't have this bug. Seems like the normal paragraph composer thinks of the variable as longer than it really is, while the WRC doesn't have this problem.

  • ORA-00060: deadlock detected while waiting for resource CLOSE cursor

    Hi,
    I am a new member of this forum. I am working with a problem we got a few weeks ago. It is from a Pro C batch executable running on 10 threads dealing with >800 data accessed from multiple tables. The error as reported came from a package.function call.
    This is the error I encountered:
    process_item~G****, D***~-60~ORA-00060: deadlock detected while waiting for resource~PACKAGE ERROR = CLOSE cursor C_***** in package R***.I*** 7641
    The cursor is a simple SELECT cursor without Table or Record locking.
    My questions are:
    *Upon the occurrence of this error, is the execution already at the CLOSE cursor line or did the error occurred between the OPEN cursor and the CLOSE cursor? There are several lines of code in between OPEN and CLOSE:
    - one that calls for a package.function that simply stores parameter values to a variable
    - another one which fetches the cursor. The group that holds the cursor values is only used by a single function in the package
    *Is it possible for this CLOSE cursor to cause a deadlock? What could have caused this?
    *From what I know, Oracle deals with deadlocks by aborting the deadlocking process while others continue, but this deadlock caused our program to hang. How is this possible? Could the root cause of the deadlock be from our threading program? This is a rare occurrence and happened only twice this year.
    Thanks,
    Raf

    Raf Serrano wrote:
    Hi,
    I am a new member of this forum. I am working with a problem we got a few weeks ago. It is from a Pro C batch executable running on 10 threads dealing with >800 data accessed from multiple tables. The error as reported came from a package.function call.
    This is the error I encountered:
    process_item~G****, D***~-60~ORA-00060: deadlock detected while waiting for resource~PACKAGE ERROR = CLOSE cursor C_***** in package R***.I*** 7641
    The cursor is a simple SELECT cursor without Table or Record locking.
    My questions are:
    *Upon the occurrence of this error, is the execution already at the CLOSE cursor line or did the error occurred between the OPEN cursor and the CLOSE cursor? There are several lines of code in between OPEN and CLOSE:
    - one that calls for a package.function that simply stores parameter values to a variable
    - another one which fetches the cursor. The group that holds the cursor values is only used by a single function in the package
    *Is it possible for this CLOSE cursor to cause a deadlock? What could have caused this?
    *From what I know, Oracle deals with deadlocks by aborting the deadlocking process while others continue, but this deadlock caused our program to hang. How is this possible? Could the root cause of the deadlock be from our threading program? This is a rare occurrence and happened only twice this year.
    Thanks,
    RafSELECT (without FOR UPDATE) statements are never involved in ORA-00060.
    only DML statements throw ORA-00060 error

  • Clustered indexes and deadlocks

    Hi,
    I have run into some problem with clustered indexes and deadlocks. I have found some breadcrumbs about this on the web but didn't really understand everything. I am an DBA by accident and mainly BI and DWH developer. The article most relevant to the problem
    seems to be the following:
    SQL Server Deadlocks Caused By Clustered Index Scan .
    The database is running with READ COMMITTED SNAPSHOT Transaction Isolation Level. Problematic seems to be the second query. First a row is inserted into table SubjectRevisionEntity.  Second a row is inserted into table Partner which has a foreign key
    on SubjectRevisionEntity. This foreign key is validated using a Clustered Index Seek.
    Having done some research on the topic using the internet my hypothesis is as follows:
    - Insert from Query 1 in Session 1 locks page in Table SubjectRevisionEntity
    - Now a new session (Session 2) is started. Insert from Query 1 in Session 2 probably locks the same page in Table SubjectRevisionEntity.
    - Insert from Query 2 in Session 1 locks page in Table Partner
       Lock on page in Table SubjectRevisionEntity is necessary to do the Clustered Index Seek. However this page is already locked by Session 2. However, Session 2 needs to lock page in Table Partner which is already locked by Session 1 --> deadlock
    occurs
    Does this make any sense? At the moment I am not having the means to test the hypothesis but I will look after that.
    I am just thinking about countermeasures to undertake. What about configuring the index to avoid page locks? All other queries seem to be fine I suppose as they operate on only one table. My fellows from software engineering favour to replace clustered indexes
    by nonclustered indexes as the already have done in the past. However, I think the disadvantages of nonclustered indexes aka heaps regarding storage (forwarded records) and query performance are much bigger than their use for problems like these.
    Regarding the
    article I did not understand the author's point, that two simultaneous table scans on one table by two sessions won't work. I thought that this is no problem as the sessions would use a shared lock on the table.
    Thank you very much for sharing your expertise in advance!
    Martin

    As you describe this that cannot be the cause of your deadlock.
    After session 1 executes query 1, it will have an IX (Intent Exclusive) lock on the clustered index of table SubjectRevisionEntity (note that a lock on a clustered index is a lock on the table since the table is contained in the clustered index), also an
    IX lock on the page in the index where the new row will be inserted and an X (exclusive) lock on the key that you just inserted.
    When session 2 executes it also needs an IX lock on the clustered index of table SubjectRevisionEntity, this is allowed because multiple sessions can have IX locks on the same resource at the same time, also an IX lock on the page in the index where the
    new row will be inserted (also allowed even if this entry is in the same page as the row inserted by session 1), and an X lock on the key that session 2 inserted.  This is also allowed UNLESS session 2 and session 1 are trying to insert a row with the
    SAME primary key value.  From your description, I gather that session 1 and session 2 are trying to insert different keys.
    Then session 1 attempts to insert a row in Partner which has a foreign key reference to the row in SubjectRevisionEntity.  That means it must check for the existence of the row that session 1 inserted.  But it can do this because all it needs is
    a S (shared) lock on the SubjectRevisionEntity table, and an S lock on the page.  It that get those even though session 2 has an IX lock on those resources because S locks and IX locks are compatible.  It also needs an S lock on the row in SubjectRevisionEntity. 
    That is no problem unless it is trying to reference the row which session 2 just entered.  (Once again, I assume this is not the case in your situation?)  It then inserts the row in Partner getting an IX lock on the Partner table, an IX lock on the
    page and an X lock on the new key in Partner.
    Then session 2 attempts to insert a row in Partner.  That will work unless either it is inserting a row in Partner with the same primary key as the row inserted by session 1 or it is trying to reference the same row in SubjectRevisionEntity that session
    1 inserted.
    So this cannot be the cause of your deadlock unless both sessions are entering the same key values.  The fact that they may both be entering keys on the same page should not be causing you deadlock problems.
    Regarding your question about why 2 table scans of the entire table (or entire clustered index scan if the table has a clustered index), you are correct, the scans do get shared locks and there is no deadlock problem UNLESS both sessions are holding locks
    that are incompatible with S locks.  For example, if you were in read committed mode and session 1 had inserted a row with clustered index key = 47 and session 2 had inserted a row with clustered index key = 23 and and both sessions attempt to do a complete
    clustered index scan (by, for example, by doing something like SELECT <blah blah> FROM <table> WHERE <some nonindexed column> = 0, then both sessions will try to get S locks on every row so session 1 will be stopped at key = 23 and session
    2 will be stopped at key = 47 and that is a deadlock.  BUT
    You are using READ COMMITTED SNAPSHOT, not READ COMMITTED.  In READ COMMITTED SNAPSHOT, writes do not block reads.  So the situation above does not apply to you since neither of the sessions would be blocked because it was attempting to read a
    row which was locked by an update from another session.
    Tom

  • Necessity for deadlock handling

    Being less than awfully bright, I didn't realise until very recently that deadlock handling is most likely essential in all but the simplest applications built on DB XML. This is no criticism of DBXML, which is wonderful, just a learning issue.
    I wondered if it'd be worth adding an FAQ entry to that effect together with a hint or two about how best to handle it (I guess that'd be per-language). It's probably not a frequently asked question, but it ought to be.
    In Java I refactored all my transaction-surrounded code blocks into method-local class instances, passed as a parameter to a static MyXmlTransactionImpl.wrapWithDeadlockRetry() method.
    Also, I used ThreadLocal for XmlTransaction and XmlQueryContext objects (in my app, a thread that starts a transaction also finishes it).
    I'd like to know approaches others have taken in Java, but also to help others be aware from day 1 of their coding that they shouldn't remain ignorant of this coding requirement.

    I thought 3 pieces to it (sorry about formatting, couldn't see any way to make it readable):
    1. Interface (to be implemented by method-local anonymous classes for the most part):
    public interface SleepycatXmlTransactionWrapper<T> {
         public T run() throws Exception;     
    2. Class with static method and static ThreadLocal property which actually does the transaction + deadlock retries:
    public class SleepycatXmlTransaction {
         public static final int DEADLOCK_RETRIES = 3;
         private static ThreadLocal<XmlTransaction> tx = new ThreadLocal<XmlTransaction>();
         private static void createTransaction() {...blah...}
         private static void commitTransaction() {...blah...}
         privatet static void abortTransaction() {...blah...}
         public static <T> T wrapWithDeadlockRetry( SleepycatXmlTransactionWrapper<T> txw) throws Exception {
              Exception cause = null; // Wrapped in a TeqloException if retries fail
              T returnValue = null;
              for ( int i = 0; i < DEADLOCK_RETRIES; i++) {
                   try {
                        createTransaction(); // static method uses ThreadLocal XmlTransaction
                        returnValue = txw.run(); // Do the work, return whatever's needed
                        commitTransaction(); // ditto
                        return returnValue; // ditto
                   catch ( Exception e) {
                        // Abort, but continue in the loop if our transaction was deadlocked
                        cause = e;
                        abortTransaction();
                        if ( isDeadlock( e)) {
    Loggers.XML_RUNTIME.info( "Transaction deadlock " + (i + 1));
    Thread.yield(); // Give other threads a chance before we retry
                             continue;
                        else
                             throw cause;
              // We're out of retries - too bad
              throw new FoobarException( "Transaction failed after " + DEADLOCK_RETRIES + " retries");
    3. Use by creating method-local class implementing SleepycatXmlTransactionWrapper and passing to the static SleepycatXmlTransaction.wrapWithDeadlockTransaction(...) method:
         public Vector<String> foo( final String bar) throws SomeException {
              Vector<String> result = null;
              try {
                   result = SleepycatXmlTransaction.wrapWithDeadlockRetry( new SleepycatXmlTransactionWrapper<Vector<String>>() {
                        public Vector<String> run() throws Exception {
                             ...all your sleepycat stuff...
              catch ( Exception any) {
                   blah blah
              return result;
    The parameterized method-local classes are useful if (like me) you've done a lot of code all terribly nicely wrapped in transactions but completely omitted to deal with deadlock handling. Refactoring those blocks of code into the form above is very dull, but pretty quick if you're rapid with cut and paste.
    I hope this is useful to someone. I'm sure there are better solutions.

  • Chart Navigation Javascript Error

    Hey guys,
    I have a problem trying to navigate from a chart which has a x-axis scale and a legend (means both of them are supposed to be sent to the navigated-to report).
    My legend is in hebrew btw, so what BI usually does is convert it to hex and it works.
    When i try to navigate without a legend (my x-axis scale contains numbers) it works, and also when I put the legend as the x-axis and remove my numbers scale (so that hebrew values are sent, but only when one value is sent).
    My problem seems to be when trying to send to filters and the second filter is in hebrew, because clicking on different categories i get different errors, like:
    "Expected '['"
    "Unterminated string constant"
    "Expected hexadecimal digit"
    etc.
    Does anyone know this problem? Is there a patch maybe?

    Hi Kristoffer,
    our system administrators told me that a similar problem was encountered before by my client and they pointed me to a SAP note (Number 913065). I copy here an abstract of it:
    <i>Symptom
    When clicking on the TLN the following javascript error is thrown:
    "gNavTree.children[...] is null or not an object"
    This can occur in one of the following cases:
    1. The first page after login contains a page with links. If one of the
    links leads to a page in the PCD that is not part of any of the roles and
    was clicked before clicking anything else in the TLN - the next time the
    user will click on the TLN the js error will be thrown.
    2. One of the pages in the portal contains a list of links that leads to an
    invisible page after clicking on one of the links and then clicking on the
    TLN, the above js error appear.
    More Terms
    Invisible, TopLevel
    Cause and Prerequisites
    NW04
    Solution
    This problem was solved in NW04 SP17. Please install the latest SP
    available.</i>
    In fact, in our system the problem occurs with the very first link of the "Appraisals" workset  we follow; if we go back and try another link, this new one doesn't present the problem.
    Unfortunately, our page seems to be "part of a role", so I don't actually understand why the problem occurs.
    I hope this can be useful to you...
    Regards,
    Lorenzo

  • Transactions Control

    hi,
    Can anyone help me.
    I need to make an update query statement in a java program. How do i control the transactions. by doing commit and rollback. and how do i make autocommit false. sample code pls.
    Thanks
    shameel.

    Yes you would do the rollback if an exception occurs. Generally with a stable network, database, and careful design of your update procedures rollbacks should not occur.
    Connection failures and database failures should not occur on a frequent basis.
    The other reasons that can cause failure:
    Record, file, or database locks by other users or processes that are not released (or take a very long time).
    Deadlocks (caused when say one process locks file1 then file2 - another process locks file2 then file1).
    Generally transactions are used when multiple related tables are updated at the same time and they must occur at the same time.
    rykk

  • How to remove the entity instances from a decision report

    Please see below the rules and the resulting decision report
    How can I remove, from the decision report, the four lines that say "the persons in the family unit", instance 1, instance 2, instance 3?
    I just can't seem to find a place where the use of silent or invisible will cause the four lines not to appear
    The Rules
    the applicants for income assistance in a family unit have completed (and submitted) to the minister an application for income assistance (part1) form if
    forall(the persons in the family unit, the person satisfies the requirements to complete and submit an application for assistance (part 1) form)
    the person satisfies the requirements to complete and submit an application for assistance (part 1) form if
    all
    the person is an applicant
    s4.1(2)(a)(i)     the person has provided a social insurance number
    s4.1(2)(a)(ii)     the person has provided the information, authorizations, declarations and verifications specified by the minister as required in the application for assistance (part 1) form
    The Decision Report
    EA Regs s4.1(2)(a)(Application - Part1) is satisfied.
    The applicants for income assistance in a family unit have completed (and submitted) to the minister an application for income assistance (part1) form.
    the persons in the family unit
    instance #1
    instance #2
    instance #3
    Abel satisfies the requirements to complete and submit an application for assistance (part 1) form.
    Abel is an applicant.
    Abel satisfies section s4.1(2)(a)(i).
    Abel has provided a social insurance number.
    Abel satisfies section s4.1(2)(a)(ii).
    Abel has provided the information, authorizations, declarations and verifications specified by the minister as required in the application for assistance (part 1) form.
    Edited by: A Gibson on Oct 11, 2010 3:35 PM

    Here are some further details. If images could be attached to this forum then I would have included some screenshots, but this forum only allows text.
    1. Set up regular name substitution (See the sections "Set up substitution" and "Substitute the actual value of a variable for its text" in the OPM Help article "Change the text of an interview question or sentence").
    2. In the Properties file, double-click on the entity. This will open the Edit Entity dialog.
    3. In the Edit Entity dialog, fill in the Identifier field with the variable you're using for the regular name substitution.
    4. Click OK and you're done!
    Cheers,
    Jasmine

  • TNS error ORA-12154

    Hi all,
    One of our client is trying to connect to our database from his local pc. We are able to connect to the database fine from here.
    But when he connects from his pc via vpn it gives him this error:
    Ora-12154: TNS:could not resolve the connect identifier specified.
    I checked the path and the Oracle client is in the path on his pc. Tnsping works. Not sure what else I should check. I do not have access to his pc, I just have to troubleshoot on the phont.
    Below is his sqlnet.ora and tnsnames.ora.
    # SQLNET.ORA Network Configuration File: C:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora
    #NAMES.DIRECTORY_PATH= (TNSNAMES)
    # tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
    # Generated by Oracle configuration tools.
    alp =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = alm)(PORT = 1525))
    (CONNECT_DATA =
    (SID = alp)
    (SERVER = DEDICATED)
    Please give me your suggestions.
    Thanks.
    Edited by: user553564 on Oct 3, 2008 7:55 AM

    When you do the tnsping, does it say using tnsnames or hostname? I've noticed it can be a bit confusing when you have a host running oracle that is not in your tnsnames.ora, it will successfully tnsping, because the host has a listener running, but you can't attach because the connection string is different. For example, I can tnsping a host named POLARIS, which is not in my tnsnames.ora, but it is in DNS and is running XE. D'Oh!
    You might consider trying a service_name that matches your lsnrctl status output, rather than SID in the tnsnames.ora. It's also possible the user has multiple tnsnames.ora (especially if several things have been installed), and is picking up the wrong one. Try changing things the connect name to something just plain weird and see if it makes a difference. See if there is TWO_TASK in your environment, too.
    Other reasons I'm going bald: case sensitivity of the SID; having two nearly identical entries in the tnsnames.ora and not scrolling down while editing; sqlnet.ora strangenesses; and I've "seen" (in earlier versions, anyways), invisible characters causing problems.

  • Illegal character \92 error.Tried everything

    Hi, Im trying to make a calculator program and in the line where I divide a by b, im getting an Illegal Character:\92 error for some reason. To type \ im using \\ as an escape character, and it seems to work earlier in the program with no problem.
    Heres the code:
    import java.io.*;
    public class PA83 //Simple calc
        public void calculator()
            try
                InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader(isr);
                System.out.println("Enter number 1");
                double a = ((double) br.readLine());
                System.out.println("Enter number 2");
                double b = ((double) br.readLine());
                System.out.println("1.Add\n2.Subtract a-b\n3.Subtract b-a\n4.Multiply\n5.Divide a\\b\n6.Divide b\\a\n7.Quit");
                int c = Integer.parseInt(br.readLine());
                switch(c)
                    case 1:System.out.println(a+"+"+b+" = "+(a+b));
                    break;
                    case 2:System.out.println(a+"-"+b+" = "+(a-b));
                    break;
                    case 3:System.out.println(b+"-"+a+" = "+(b-a));
                    break;
                    case 4:System.out.println(a+"x"+b+" = "+(a*b));
                    break;
                    case 5:System.out.println(a+"\\"+b+" = "+(a\b));
                    break;
                    case 6:System.out.println(b+"\\"+a+" = "+(b\a));
                    break;
                    case 7:break;
                    case default:System.out.println("Invalid Option. Please select a number from 1-6");
                    break;
            catch(Exception e)
                System.out.println("Error: "+e.getMessage());
    }              It highlights case 5 and gives me an illegal character:\92 error, but ive used the double slashes(\\) earlier in the println to choose an option without any problem there.
    I dont understand why this is happening! Even if i remove the "\\" i get the same error , and as BlueJ suggested, i tried typing the line again to avoid some invisible character causing problems..

    Hi,
    I think we use "/" for division and not "\" .
    thanks & regards,
    Manoj

  • Javascript error in navigation

    Hi all,
    I have a problem in the portal navigation (we have Enterprise Portal 6.0).
    I have the following structure:
    My staff (workset)  Appraisals (workset)  Appraisals (page)
    The page contains several links to BSP applications.
    The problem occurs with only one of these links: whenever I click it the application loads and works fine, but as soon as I click on the "Appraisals" workset nothing happens and I can't go back to the links page. I have to click on the upper menu "My staff" and re-navigate to the "Appraisals" workset to see the page with links.
    When the error occurs the following Javascript error is recorded by the browser:
    Error recorded by Internet Explorer 6.0 sp1:
    line: 778
    char: 3
    error:'gNavTree.children[...].children' is null or not an object
    Code: 0
    URL: http://sapepr01.myclient.it:52500/irj/portal
    Error recorded by Mozilla Firefox 1.5:
    errore: gNavTree.children[gLevelOneActiveID] has no properties
    source file: http://sapepr01.myclient.it:52500/irj/portal
    row: 778
    Do you have any clue about this error? Can you give me some hints?
    Thank you for your help,
    Lorenzo Tandin

    Hi Kristoffer,
    our system administrators told me that a similar problem was encountered before by my client and they pointed me to a SAP note (Number 913065). I copy here an abstract of it:
    <i>Symptom
    When clicking on the TLN the following javascript error is thrown:
    "gNavTree.children[...] is null or not an object"
    This can occur in one of the following cases:
    1. The first page after login contains a page with links. If one of the
    links leads to a page in the PCD that is not part of any of the roles and
    was clicked before clicking anything else in the TLN - the next time the
    user will click on the TLN the js error will be thrown.
    2. One of the pages in the portal contains a list of links that leads to an
    invisible page after clicking on one of the links and then clicking on the
    TLN, the above js error appear.
    More Terms
    Invisible, TopLevel
    Cause and Prerequisites
    NW04
    Solution
    This problem was solved in NW04 SP17. Please install the latest SP
    available.</i>
    In fact, in our system the problem occurs with the very first link of the "Appraisals" workset  we follow; if we go back and try another link, this new one doesn't present the problem.
    Unfortunately, our page seems to be "part of a role", so I don't actually understand why the problem occurs.
    I hope this can be useful to you...
    Regards,
    Lorenzo

Maybe you are looking for

  • Project management resp

    I have created responsibility for project management . But in Search project i am not able to view all tabs there like projects , workplan, etc . Can any body plpease help ??

  • How can I get this program to work -- Adobe Send or Adobe SendNow

    How can I get this program to work?  I have used Adobe SendNow successfully for several years and am on automatic renewal and getting nothing but frustration for my money!  I have been unsuccessful at sending anything in the past several months.  Tod

  • Simple cfc mapping issue = I am a muppet

    Right, there's something blissfully simple that I'm just missing here, but I've had by C# hat on for weeks and now have had to come back to CF and I've gotten stuck on a simple issue. Yes, I've trawled Google and the search on here but I just can't s

  • How do I get this effect for my voice?

    I'm recording voice in Logic Pro. What would be the inserts for a soft, mellow, rich, full-sounding vocal track? Something along this line: http://www.youtube.com/watch?v=nzW3mc-Ac58&feature=related Thanks in advance! ND

  • Launching Bridge within PS CS6

    Just an observation really. In PS CS5, you could launch / access Bridge from the Bridge Icon at the top of the screen, now (I think) you can only do this by clicking Mini Bridge link at the bottom of the screen and then clicking on the Bridge icon. I