Uploaded image for project: 'logback'
  1. logback
  2. LOGBACK-504

Console appender may deadlock when System.out is hijacked

    XMLWordPrintable

Details

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • 1.0.0
    • logback-classic
    • 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	
      	...
      

      Attachments

        Activity

          People

            logback-dev Logback dev list
            gunnar Gunnar Wagenknecht
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: