Summary: | DRD does not detect thread hazards with C++ lambdas that capture by reference | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Paul Floyd <pjfloyd> |
Component: | drd | Assignee: | Paul Floyd <pjfloyd> |
Status: | REPORTED --- | ||
Severity: | normal | ||
Priority: | NOR | ||
Version First Reported In: | 3.24 GIT | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Paul Floyd
2024-11-16 07:24:47 UTC
I've been debugging drd_trace_store_1 and drd_trace_load_1 For the load if (DRD_(running_thread_is_recording_loads)() && (s_check_stack_accesses || ! DRD_(thread_address_on_stack)(addr)) && bm_access_load_1_triggers_conflict(addr) && ! DRD_(is_suppressed)(addr, addr + 1)) { drd_report_race(addr, 1, eLoad); } DRD_(thread_address_on_stack)(addr) is false (the address is above the call frame of the lambda in the call frame of main). I need to debug the bitmaps related to this address to see why no conflict is detected. I also tried this with some heap memory and still no error detected. |