# HG changeset patch # User eosterlund # Date 1574673041 0 # Node ID 6ba3d8d4113522fb2951066f5d512ceab3c6f2c4 # Parent 23ecaf949f8f8039db6127d51e2d90c585b6f199 8234509: Race in macOS os::processor_id() Reviewed-by: dholmes, pliden, rehn diff -r 23ecaf949f8f -r 6ba3d8d41135 src/hotspot/os/bsd/os_bsd.cpp --- a/src/hotspot/os/bsd/os_bsd.cpp Mon Nov 25 08:11:24 2019 +0100 +++ b/src/hotspot/os/bsd/os_bsd.cpp Mon Nov 25 09:10:41 2019 +0000 @@ -3264,12 +3264,14 @@ int processor_id = Atomic::load(&mapping[apic_id]); while (processor_id < 0) { - if (Atomic::cmpxchg(-2, &mapping[apic_id], -1)) { + if (Atomic::cmpxchg(-2, &mapping[apic_id], -1) == -1) { Atomic::store(Atomic::add(1, &next_processor_id) - 1, &mapping[apic_id]); } processor_id = Atomic::load(&mapping[apic_id]); } + assert(processor_id >= 0 && processor_id < os::processor_count(), "invalid processor id"); + return (uint)processor_id; } #endif