Details
-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
1.0.0
-
None
Description
The issue is weird and may be a special case. However, I wonder if anything can be implemented in Logback to detect and workaround such issues.
From https://issues.apache.org/jira/browse/SSHD-152:
I'm not really sure what I did but I think I somehow managed to deadlock my system using SSHD in combination with Logback console appender.
Thread 1
Thread [Thread-21] (Suspended) owns: ChannelOutputStream (id=481) owns: ConsoleOutputStream (id=482) owns: PrintStream (id=483) owns: Object (id=202) waited by: Thread [...] (Suspended) waited by: Thread [...] (Suspended) waited by: Thread [...] (Suspended) waited by: Thread [NioProcessor-2] (Suspended) waited by: Thread [...] (Suspended) waited by: Thread [...] (Suspended) waited by: Thread [...] (Suspended) waited by: Thread [...] (Suspended) waited by: Thread [...] (Suspended) waited by: Thread [...] (Suspended) owns: OutputStreamWriter (id=484) waiting for: Window (id=485) Object.wait(long) line: not available [native method] Window(Object).wait() line: 503 Window.waitForSpace() line: 146 ChannelOutputStream.flush() line: 104 ConsoleOutputStream.flush() line: 97 ConsoleOutputStream.write(int) line: 83 ConsoleOutputStream(OutputStream).write(byte[], int, int) line: 116 PrintStream.write(byte[], int, int) line: 480 PrintStream(FilterOutputStream).write(byte[]) line: 97 ThreadPrintStream.write(byte[]) line: 245 ConsoleTarget$1.write(byte[]) line: 36 PatternLayoutEncoder(LayoutWrappingEncoder<E>).doEncode(E) line: 103 ConsoleAppender<E>(OutputStreamAppender<E>).writeOut(E) line: 193 ConsoleAppender<E>(OutputStreamAppender<E>).subAppend(E) line: 217 ConsoleAppender<E>(OutputStreamAppender<E>).append(E) line: 108 ConsoleAppender<E>(UnsynchronizedAppenderBase<E>).doAppend(E) line: 88 AppenderAttachableImpl<E>.appendLoopOnAppenders(E) line: 64 Logger.appendLoopOnAppenders(ILoggingEvent) line: 285 Logger.callAppenders(ILoggingEvent) line: 272 Logger.buildLoggingEventAndAppend(String, Marker, Level, String, Object[], Throwable) line: 473 Logger.filterAndLog_2(String, Marker, Level, String, Object, Object, Throwable) line: 464 Logger.debug(String, Object, Object) line: 542 ChannelOutputStream.flush() line: 119 ...
Thread 2
Thread [NioProcessor-2] (Suspended) owns: Object (id=150) waiting for: Object (id=202) owned by: Thread [Thread-21] (Suspended) waiting for: Window (id=485) ConsoleAppender<E>(OutputStreamAppender<E>).subAppend(E) line: 217 ConsoleAppender<E>(OutputStreamAppender<E>).append(E) line: 108 ConsoleAppender<E>(UnsynchronizedAppenderBase<E>).doAppend(E) line: 88 AppenderAttachableImpl<E>.appendLoopOnAppenders(E) line: 64 Logger.appendLoopOnAppenders(ILoggingEvent) line: 285 Logger.callAppenders(ILoggingEvent) line: 272 Logger.buildLoggingEventAndAppend(String, Marker, Level, String, Object[], Throwable) line: 473 Logger.filterAndLog_1(String, Marker, Level, String, Object, Throwable) line: 445 Logger.debug(String, Object) line: 538 ServerSession.handleMessage(Buffer) line: 119 ...