You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
During stress testing my application as a nanos unikernel, I noticed crashes because of a missing FUTEX_WAKE_BITSET implementation.
Can a stack trace be printed that tells me where it was called? It should be coming from the folly library. However, the scenario would not occur when a debugger is attached.
Is implementing the FUTEX_WAKE_BITSET function possible, or is this mask functionality not implemented? (I couldn't find it, although FUTEX_WAIT_BITSET does exist)
The text was updated successfully, but these errors were encountered:
You would need to make a custom change to the Nanos kernel and rebuild the kernel; more specifically, you can add a call to dump_context(current->context); in the futex() function at https://github.com/nanovms/nanos/blob/master/src/unix/futex.c#L347. This would print a frame trace and stack trace of the user program when it invoked the FUTEX_WAKE_BITSET operation. If you add the "ingest_program_symbols" flag to your Ops configuration file (as in { "Debugflags":["ingest_program_symbols"] }, see https://docs.ops.city/ops/configuration), the trace will include the program function names (unless the program executable has been stripped of the ELF symbol names); however, if the futex operation came from a dynamically linked library, you won't see the function names from that library.
The bit mask functionality for futex wait and wake operations is currently not implemented in the kernel, but it is definitely possible to add it in the future.
During stress testing my application as a nanos unikernel, I noticed crashes because of a missing
FUTEX_WAKE_BITSET
implementation.FUTEX_WAKE_BITSET
function possible, or is this mask functionality not implemented? (I couldn't find it, althoughFUTEX_WAIT_BITSET
does exist)The text was updated successfully, but these errors were encountered: