DynamoRIO / DynamoRIO/drmemory

overlaps_delayed_free returns wrong value when replace_malloc

Open
#1,524 0 comments 0 reactions 0 assignees View on GitHub
Bug-Assert Migrated Priority-Medium
Dominant language
C
Stars
2.7k
Forks
290
PR merge metrics
No merged PRs in 30d

Description

_From [zhao...@google.com](https://code.google.com/u/106321947286816917100/) on April 20, 2014 23:14:39_

time ~/Workspace/DrMemory/builds/build_x86_drm_dbg.git/bin/drmemory.exe -debug -pause_at_assert -pause_at_error -callstack_max_frames 40 -suppress ./tools/valgrind/drmemory/suppressions_full.txt -light -check_dangling_pointers -delay_frees_stack -- ./out/Debug/content_unittests.exe --gtest_filter=BrowserAccessibilityTest.*

[==========] Running 7 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 7 tests from BrowserAccessibilityTest
[ RUN ] BrowserAccessibilityTest.TestNoLeaks
~~Dr.M~~ ASSERT FAILURE (thread 648768): D:\src\cygwin\home\zhaoqin\Workspace\DrMemory\drmemory.git\drmemory\pattern.c:1451: delay_free_start != NULL && delay_free_start < delay_free_end (dealy_free_start/dealy_free_end is wrong)

This happens when the code calls overlaps_delayed_free

```
if (overlaps_delayed_free(addr, addr + 1,
&delay_free_start, &delay_free_end,
&pcs, false/*any*/) &&
pcs != NULL) {
ASSERT(delay_free_start != NULL && delay_free_start \< delay_free_end,
"dealy_free_start/dealy_free_end is wrong");
```

0:000> dv
addr = 0x0d9d0000 "???"
info = 0x0018f470
cur_free_start = 0x0d9d8608 ""
delay_free_start = 0x0d9cfff8 "???"
cur_free_end = 0x0d9d86c8 "???"
cur_free_pc = 0x0d9d86b0
delay_free_end = 0x0d9cdc20 "???"
pcs = 0x1b05f3fc
- delay_free_end (= 0x0d9cdc20) < delay_free_start (= 0x0d9cfff8)

_Original issue: http://code.google.com/p/drmemory/issues/detail?id=1524_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.