Skip to content

"memory access out of bounds"/"operation does not support unaligned accesses" when using mutexes/condition_variables #12971

@emaxx-google

Description

@emaxx-google

In a program that uses std::thread, std::mutex and std::condition_variable, I'm frequently observing crashes with different messages but in a roughly the same piece of code. The exceptions observed so far are:

(1):

module.worker.js:24 RuntimeError: operation does not support unaligned accesses
    at __pthread_mutex_lock (module.wasm:wasm-function[13025]:0x1ee6ca)
    at std::__2::__libcpp_mutex_lock(pthread_mutex_t*) (module.wasm:wasm-function[12706]:0x1e72bb)
    at std::__2::mutex::lock() (module.wasm:wasm-function[12714]:0x1e7435)
    at std::__2::unique_lock<std::__2::mutex>::unique_lock(std::__2::mutex&) (module.wasm:wasm-function[476]:0xe414)
    at PushToReadBuffer(unsigned char const*, long long, bool*) (module.wasm:wasm-function[4361]:0x9cdb2)

(2):

RuntimeError: memory access out of bounds
    at __private_cond_signal (module.wasm:wasm-function[13038]:0x1ef24b)
    at pthread_cond_broadcast (module.wasm:wasm-function[13027]:0x1ee708)
    at std::__2::__libcpp_condvar_broadcast(pthread_cond_t*) (module.wasm:wasm-function[11543]:0x1d22ad)
    at std::__2::condition_variable::notify_all() (module.wasm:wasm-function[11542]:0x1d22a4)
    at PushToReadBuffer(unsigned char const*, long long, bool*) (module.wasm:wasm-function[4361]:0x9d047)

(3):

RuntimeError: operation does not support unaligned accesses
    at __private_cond_signal (module.wasm:wasm-function[13038]:0x1ef24b)
    at pthread_cond_broadcast (module.wasm:wasm-function[13027]:0x1ee708)
    at std::__2::__libcpp_condvar_broadcast(pthread_cond_t*) (module.wasm:wasm-function[11543]:0x1d22ad)
    at std::__2::condition_variable::notify_all() (module.wasm:wasm-function[11542]:0x1d22a4)
    at PushToReadBuffer(unsigned char const*, long long, bool*) (module.wasm:wasm-function[4361]:0x9d047)

I'm using Emscripten 2.0.6. I've tried various debugging flags (ASSERTIONS=2, SAFE_HEAP=1, PTHREADS_DEBUG=1, RUNTIME_LOGGING=1, O0, g4), but without luck.

Unfortunately, I don't have a minimal repro yet.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions