< prev index next >
src/share/vm/logging/logFileStreamOutput.cpp
Print this page
rev 12289 : 8170548: VM may crash at startup because StdoutLog/StderrLog logging stream can be badly aligned
@@ -27,15 +27,21 @@
#include "logging/logFileStreamOutput.hpp"
#include "logging/logMessageBuffer.hpp"
#include "memory/allocation.inline.hpp"
static bool initialized;
-static char stdoutmem[sizeof(LogStdoutOutput)];
-static char stderrmem[sizeof(LogStderrOutput)];
+static union {
+ char stdoutmem[sizeof(LogStdoutOutput)];
+ jlong dummy;
+} aligned_stdoutmem;
+static union {
+ char stderrmem[sizeof(LogStderrOutput)];
+ jlong dummy;
+} aligned_stderrmem;
-LogStdoutOutput &StdoutLog = reinterpret_cast<LogStdoutOutput&>(stdoutmem);
-LogStderrOutput &StderrLog = reinterpret_cast<LogStderrOutput&>(stderrmem);
+LogStdoutOutput &StdoutLog = reinterpret_cast<LogStdoutOutput&>(aligned_stdoutmem.stdoutmem);
+LogStderrOutput &StderrLog = reinterpret_cast<LogStderrOutput&>(aligned_stderrmem.stderrmem);
LogFileStreamInitializer::LogFileStreamInitializer() {
if (!initialized) {
::new (&StdoutLog) LogStdoutOutput();
::new (&StderrLog) LogStderrOutput();
< prev index next >