You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2016/10/12 13:36:20 UTC

[jira] [Closed] (KARAF-2973) Writing to stderr results in a blocked thread

     [ https://issues.apache.org/jira/browse/KARAF-2973?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet closed KARAF-2973.
----------------------------------
    Resolution: Won't Fix
      Assignee: Guillaume Nodet

This looks the correct behavior.
Karaf acts like an OS, so if you launch a command the err stream will always be printed to your terminal, be it local or remote through ssh.

> Writing to stderr results in a blocked thread
> ---------------------------------------------
>
>                 Key: KARAF-2973
>                 URL: https://issues.apache.org/jira/browse/KARAF-2973
>             Project: Karaf
>          Issue Type: Bug
>    Affects Versions: 2.3.4
>            Reporter: Martin Lichtin
>            Assignee: Guillaume Nodet
>
> An innocent-looking e.printStackTrace() resulted in a blocked thread.
> {noformat}
> "Camel (CamelContext) thread #0 - JmsConsumer[myname]" daemon prio=10 tid=0x00002aaab886d000 nid=0x3396 in Object.wait() [0x000000004963d000]
>    java.lang.Thread.State: WAITING (on object monitor)
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0x00000000ce040a38> (a org.apache.sshd.common.channel.Window)
> 	at java.lang.Object.wait(Object.java:503)
> 	at org.apache.sshd.common.channel.Window.waitForSpace(Window.java:146)
> 	- locked <0x00000000ce040a38> (a org.apache.sshd.common.channel.Window)
> 	at org.apache.sshd.common.channel.ChannelOutputStream.flush(ChannelOutputStream.java:104)
> 	- locked <0x00000000cdfac4a0> (a org.apache.sshd.common.channel.ChannelOutputStream)
> 	at org.apache.sshd.common.channel.ChannelOutputStream.write(ChannelOutputStream.java:75)
> 	- locked <0x00000000cdfac4a0> (a org.apache.sshd.common.channel.ChannelOutputStream)
> 	at org.apache.sshd.common.channel.ChannelOutputStream.write(ChannelOutputStream.java:57)
> 	- locked <0x00000000cdfac4a0> (a org.apache.sshd.common.channel.ChannelOutputStream)
> 	at org.apache.karaf.shell.ssh.ShellFactoryImpl$LfToCrLfFilterOutputStream.write(ShellFactoryImpl.java:215)
> 	at java.io.FilterOutputStream.write(FilterOutputStream.java:125)
> 	at java.io.PrintStream.write(PrintStream.java:480)
> 	- locked <0x00000000ce500078> (a java.io.PrintStream)
> 	at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
> 	at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
> 	at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
> 	- locked <0x00000000ce5064c0> (a java.io.OutputStreamWriter)
> 	at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
> 	at java.io.PrintStream.write(PrintStream.java:527)
> 	- locked <0x00000000ce500078> (a java.io.PrintStream)
> 	at java.io.PrintStream.print(PrintStream.java:669)
> 	at java.io.PrintStream.println(PrintStream.java:823)
> 	- locked <0x00000000ce500078> (a java.io.PrintStream)
> 	at org.apache.felix.gogo.runtime.threadio.ThreadPrintStream.println(ThreadPrintStream.java:205)
> 	at java.lang.Throwable$WrappedPrintStream.println(Throwable.java:747)
> 	at java.lang.Throwable.printStackTrace(Throwable.java:657)
> 	- locked <0x00000000cd8f9110> (a org.apache.felix.gogo.runtime.threadio.ThreadPrintStream)
> 	at java.lang.Throwable.printStackTrace(Throwable.java:642)
> 	at java.lang.Throwable.printStackTrace(Throwable.java:633)
> ...
> {noformat}
> What's weird is that it tries to write to a (probably no longer existing) SSH session.
> Why does Felix intercept stderr writes from bundles. 
> I'd expect printing a stack trace goes directly to fd 3 (which is redirected to data/karaf.out) and is not affected by some temporary SSH console sessions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)