RFR: 8305819: LogConfigurationTest intermittently fails on AArch64
    gaogao-mem 
    duke at openjdk.org
       
    Tue Apr 25 10:58:16 UTC 2023
    
    
  
LogConfigurationTest*reconfigure*MT* crash intermittently on AArch64.
According to the crash log and coredump, we found it crash as follows:
void LogTagSet::log(LogLevelType level, const char* msg) {
  LogOutputList::Iterator it = _output_list.iterator(level);
  LogDecorations decorations(level, *this, _decorators);
  for (; it != _output_list.end(); it++) {
    (*it)->write(decorations, msg);//crash 
  }
}
In the test, two threads write into the log while another thread dynamically changes the decorators and tags. During this time, the  _output_list will be modified. Because of the relax memory model of aarch64, while adding LogOutputNode to LogOutputList, adding node to list and setting the value of node may be reordered, therefore the read thread may not read the correct value of the node's content. Consequently, storestore memory barrier is needed to ensure the order of writing. 
By the way, applying this patch may affect performance.
How to reproduce on Linux aarch64:
test case
/* @test
 * @library /test/lib
 * @modules java.base/jdk.internal.misc
 *          java.xml
 * @run main/native GTestWrapper --gtest_filter=LogConfigurationTest*reconfigure*MT*
 */
Crash may occasionally occur after running continuously for 5000 times.
-------------
Commit messages:
 - add atomic access on the reading side
 - add space
 - add comment
 - Update src/hotspot/share/logging/logOutputList.cpp
 - 8305819: LogConfigurationTest intermittently fails on AArch64
Changes: https://git.openjdk.org/jdk/pull/13421/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13421&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8305819
  Stats: 11 lines in 2 files changed: 7 ins; 0 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/13421.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13421/head:pull/13421
PR: https://git.openjdk.org/jdk/pull/13421
    
    
More information about the hotspot-runtime-dev
mailing list