Currently any output of fred to stdout or stderr goes to the console or if that's closed, to /dev/null. This way output that bypasses freenet.log can easily get lost, which turns out to be particullary inconvenient and confusing for people trying to get a thread dump from their misbehaving node (i.e. kill -SIGQUIT the JVM).
Proposal: change the java invocation line in start-freenet.sh from
nice -n 10 -- java -Xmx128m $JAVA_ARGS freenet.node.Main "$@" &
into something like
nice -n 10 -- java -Xmx128m $JAVA_ARGS freenet.node.Main "$@" >> freenet.log 2>&1 &
Mixing the output with freenet.log has the advantage that it gets some context, the messages usually aren't timestamped.
I've copied some snippets of what I've caught on stdout and stderr below, just to give you an idea of the great stuff that's waiting out there...
Cheers,
Menno
Decoding from packets: 1 2 3 4 5 7 FEC decode took 120ms.
Made 2 131072 byte check blocks in 21ms.
java.io.IOException: Short write: 0 of 16384
at freenet.ConnectionHandler$SendOutputStream.write(ConnectionHandler.java:2639)
at freenet.node.states.FCP.NewFECEncodeSegment.sendChunk(NewFECEncodeSegment.java:282)
at freenet.node.states.FCP.NewFECEncodeSegment.sendDataChunks(NewFECEncodeSegment.java:264)
at freenet.node.states.FCP.NewFECDecodeSegment.received(NewFECDecodeSegment.java:102)
at freenet.node.StateChain.received(StateChain.java:168)
at freenet.node.StateChain.received(StateChain.java:55)
at freenet.node.StandardMessageHandler$Ticket.run(StandardMessageHandler.java:210)
at freenet.node.StandardMessageHandler$Ticket.received(StandardMessageHandler.java:157)
at freenet.node.StandardMessageHandler$Ticket.access$0(StandardMessageHandler.java)
at freenet.node.StandardMessageHandler.handle(StandardMessageHandler.java:67)
at freenet.Ticker$Event.run(Ticker.java:256)
at freenet.thread.QThreadFactory$QThread.run(QThreadFactory.java:214)
Waited more than 200ms to dequeue, 7 in queue, 1451 millis since enqueued last item, 22074 maximum waits so far - could indicate serious JVM bug. Please report to [EMAIL PROTECTED] along with JVM and OS/kernel.
java.nio.channels.CancelledKeyException
at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:55)
at sun.nio.ch.SelectionKeyImpl.readyOps(SelectionKeyImpl.java:77)
at java.nio.channels.SelectionKey.isReadable(SelectionKey.java:271)
at freenet.transport.ReadSelectorLoop.inspectChannels(ReadSelectorLoop.java:209)
at freenet.transport.AbstractSelectorLoop.loop(AbstractSelectorLoop.java:550)
at freenet.transport.ReadSelectorLoop.run(ReadSelectorLoop.java:408)
at java.lang.Thread.run(Thread.java:536)
java.io.IOException: Already closed!
at freenet.ConnectionHandler.<init>(ConnectionHandler.java:213)
at freenet.OpenConnectionManager$ConnectionJob.run(OpenConnectionManager.java:740)
at freenet.thread.QThreadFactory$QThread.run(QThreadFactory.java:214)
java.lang.NullPointerException
at freenet.interfaces.BaseLocalNIOInterface.intAddress(BaseLocalNIOInterface.java:32)
at freenet.interfaces.BaseLocalNIOInterface.dispatch(BaseLocalNIOInterface.java:161)
at freenet.interfaces.NIOInterface.acceptConnection(NIOInterface.java:98)
at freenet.transport.tcpNIOListener.accept(tcpNIOListener.java:103)
at freenet.transport.ListenSelectorLoop.processConnections(ListenSelectorLoop.java:94)
at freenet.transport.AbstractSelectorLoop.loop(AbstractSelectorLoop.java:563)
at freenet.transport.ListenSelectorLoop.run(ListenSelectorLoop.java:130)
at java.lang.Thread.run(Thread.java:536)
Encoding stripe: 0 [131072] Made 14 131072 byte check blocks in 12544ms. Encoding stripe: 1 [131072] Made 14 131072 byte check blocks in 13699ms. Encoding stripe: 2 [131072] Made 14 131072 byte check blocks in 3012ms.
PARANOID CHK CHECK FAILED! expected: freenet:CHK@ <SOME KEY A (Menno)> got: freenet:CHK@ <SOME KEY B (Menno)> data.size(): 1048576 parent.segment: 0 parent.index: 47 parent.isData: true CHK of downloaded block doesn't match CHK in sf metadata.
And thread dumps of course, should you trigger them.
pgp00000.pgp
Description: PGP signature
