作者jokerspy (纠可)
看板EE_DSnP
标题[问题] testBdd 执行 error
时间Tue Jun 23 10:56:38 2009
我function都完成 compile也顺利通过
可是当我执行testBdd时 却跑出下面的error
*** glibc detected *** ./testBdd: munmap_chunk(): invalid pointer: 0xb7ee700c
***
======= Backtrace: =========
/lib/libc.so.6(cfree+0x1bb)[0xaf181b]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xa1fef1]
./testBdd[0x804c27b]
./testBdd(__gxx_personality_v0+0x147)[0x804910b]
./testBdd[0x805180b]
./testBdd[0x805186b]
/lib/libc.so.6(__libc_start_main+0xdc)[0xa9df2c]
./testBdd(__gxx_personality_v0+0x7d)[0x8049041]
======= Memory map: ========
00716000-00721000 r-xp 00000000 03:01 6612703
/lib/libgcc_s-4.1.1-20070105.so.1
00721000-00722000 rwxp 0000a000 03:01 6612703
/lib/libgcc_s-4.1.1-20070105.so.1
0096c000-00a4c000 r-xp 00000000 03:01 7994294 /usr/lib/libstdc++.so.6.0.8
00a4c000-00a4f000 r-xp 000e0000 03:01 7994294 /usr/lib/libstdc++.so.6.0.8
00a4f000-00a51000 rwxp 000e3000 03:01 7994294 /usr/lib/libstdc++.so.6.0.8
00a51000-00a57000 rwxp 00a51000 00:00 0
00a6b000-00a84000 r-xp 00000000 03:01 6612674 /lib/ld-2.5.so
00a84000-00a85000 r-xp 00018000 03:01 6612674 /lib/ld-2.5.so
00a85000-00a86000 rwxp 00019000 03:01 6612674 /lib/ld-2.5.so
00a88000-00bbf000 r-xp 00000000 03:01 6612690 /lib/libc-2.5.so
00bbf000-00bc1000 r-xp 00137000 03:01 6612690 /lib/libc-2.5.so
00bc1000-00bc2000 rwxp 00139000 03:01 6612690 /lib/libc-2.5.so
00bc2000-00bc5000 rwxp 00bc2000 00:00 0
00bc7000-00bec000 r-xp 00000000 03:01 6612701 /lib/libm-2.5.so
00bec000-00bed000 r-xp 00024000 03:01 6612701 /lib/libm-2.5.so
00bed000-00bee000 rwxp 00025000 03:01 6612701 /lib/libm-2.5.so
00cea000-00ceb000 r-xp 00cea000 00:00 0 [vdso]
08048000-08056000 r-xp 00000000 00:18 11470719
/export/home/B95/b95901164/bdd/src/bdd/test/testBdd
08056000-08057000 rw-p 0000d000 00:18 11470719
/export/home/B95/b95901164/bdd/src/bdd/test/testBdd
09079000-090b1000 rw-p 09079000 00:00 0
b7e71000-b7f5f000 rw-p b7e71000 00:00 0
b7f6e000-b7f6f000 rw-p b7f6e000 00:00 0
bfbf5000-bfc0b000 rw-p bfbf5000 00:00 0 [stack]
已经终止
看起来好像权限方面的问题??
不知道是怎麽一回事?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.235
※ 编辑: jokerspy 来自: 140.112.4.235 (06/23 10:58)
1F:推 sa901119:memory error? 06/23 10:58
2F:推 ric2k1:gdb or ddd 开一下看它 crash 在哪一行? 06/23 11:29
3F:→ jokerspy:crash在 cache reset() 可是我之前有测试过cache reset() 06/23 11:57
4F:→ jokerspy:是没有问题的阿@@ 06/23 11:58
5F:→ jokerspy:reset(){_size=0;if(_cache!=0)delete _cache;_cache=0;} 06/23 12:21
6F:推 ric2k1:那应该是有别的变数 corrupt 到 cache 的 memory 了... 06/23 12:30
7F:推 Trumen:你在cache的destructor里面有写reset()吗? 06/23 12:35
8F:→ Trumen:还有BddMgr::reset()有做_computedTable.reset()吗 06/23 12:36
9F:→ jokerspy:真人 都有耶~ 教授 请问是别的变数使用到cache的记忆体吗 06/23 12:46
10F:推 Trumen:因为你在BddMgr::reset()先做了_computedTable.reset() 06/23 12:54
11F:→ Trumen:所以Cache::_cache的位置已经先被free一次 06/23 12:55
12F:→ Trumen:而程式关掉之後 Cache呼叫destructor 同样位置又被free一次 06/23 12:56
13F:→ jokerspy:@@对耶~ 我试试看 06/23 12:57
14F:→ jokerspy:好像还是不是耶@@ 因为是程式刚开始就crash了 init里面 06/23 13:03
15F:→ jokerspy:reset就crash 这时候应该还没destruct吧 而且我把其中一 06/23 13:03
16F:→ jokerspy:comm掉也没用 06/23 13:04
17F:→ jokerspy:@@comm掉_computedTable.reset()就可以 怪怪 06/23 13:08
18F:推 Ultor:有 delete [] 漏打 [] 吗? 06/23 14:28
19F:→ jokerspy:喔耶谢谢楼上解决了 也谢谢真人和教授 06/23 14:48