[ https://issues.apache.org/jira/browse/LOGCXX-461?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thorsten Schöning reassigned LOGCXX-461: ---------------------------------------- Assignee: Thorsten Schöning > SocketAppender creates memory issue for log4j server. > ----------------------------------------------------- > > Key: LOGCXX-461 > URL: https://issues.apache.org/jira/browse/LOGCXX-461 > Project: Log4cxx > Issue Type: Bug > Components: Appender > Affects Versions: 0.10.0, 0.11.0 > Environment: Red Hat Linux 6.7 > Reporter: Jeremy Gibson > Assignee: Thorsten Schöning > > log4cxx is reproducing java's serialization methods in the ObjectOutputStream > class which the SocketAppender uses. However, there is one part missing. The > Java implementation of SocketAppender does a reset of the ObjectOutputStream > after each event which tells the ObjectInputStream to clean up its references > on the server side. Without this reset, the references will never clean up > and the server will run out of memory. There are no good ways to fix this > from the java side since the ObjectInputStream is depending on the > ObjectOutputStream to do the resetting. The byte code for TC_RESET is 0x79. > So a reset function might look something like this in ObjectOutputStream: > void ObjectOutputStream::reset(Pool& p){ > os->flush(p); > writeByte(TC_RESET,p); > os->flush(p); > objectHandle = 0x7E0000; > classDescriptions->clear(); > } > Not sure if the this change would influence any other parts of the code > except for a call in SocketAppender::append() function to use the after the > event->write() call. -- This message was sent by Atlassian JIRA (v6.3.4#6332)