[Csnd-dev] testDebugger
| Date | 2015-11-24 14:48 |
| From | jpff |
| Subject | [Csnd-dev] testDebugger |
I just ran this under valgrind, concentrating on first error
Test: Test Next Command ...virtual_keyboard real time MIDI plugin for Csound
0dBFS level = 32768.0
Csound version 6.07 (double samples) Nov 23 2015
libsndfile-1.0.26
==5150== Invalid read of size 4
==5150== at 0x4F9999F: kperf_debug (csound.c:1744)
==5150== by 0x4F9A1DB: csoundPerformKsmps (csound.c:1944)
==5150== by 0x40228F: test_next (csound_debugger_test.c:451)
==5150== by 0x52FC260: ??? (in /usr/lib64/libcunit.so.1.0.1)
==5150== by 0x52FC56E: ??? (in /usr/lib64/libcunit.so.1.0.1)
==5150== by 0x52FC8A5: CU_run_all_tests (in /usr/lib64/libcunit.so.1.0.1)
==5150== by 0x4012EC: main (csound_debugger_test.c:511)
==5150== Address 0x9d644d0 is 32 bytes inside a block of size 56 free'd
==5150== at 0x4C2A37C: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==5150== by 0x4E8C268: mfree (memalloc.c:172)
==5150== by 0x4F996AD: process_debug_buffers (csound.c:1675)
==5150== by 0x4F996AD: kperf_debug (csound.c:1719)
==5150== by 0x4F9A1DB: csoundPerformKsmps (csound.c:1944)
==5150== by 0x40228F: test_next (csound_debugger_test.c:451)
==5150== by 0x52FC260: ??? (in /usr/lib64/libcunit.so.1.0.1)
==5150== by 0x52FC56E: ??? (in /usr/lib64/libcunit.so.1.0.1)
==5150== by 0x52FC8A5: CU_run_all_tests (in /usr/lib64/libcunit.so.1.0.1)
==5150== by 0x4012EC: main (csound_debugger_test.c:511)
==5150==
That suggests that kperf_debug freed buffers at
while (n) {
if (n->line == bkpt_node->line && n->instr == bkpt_node->instr) {
prev->next = n->next;
csound->Free(csound, n); /* TODO this should be moved from kperf to a
non-realtime context */
n = prev->next;
including one that was read later at
if (data->cur_bkpt->skip <= 2) data->cur_bkpt->count = 2;
No idea what the code is trying to do though. Possibly deleting
breakpoints and not zeroing the pointer?
|
| Date | 2015-11-24 15:32 |
| From | jpff |
| Subject | Re: [Csnd-dev] testDebugger |
Update. Using breakpoints on lines 1675 and 1744 it is clear that the
free is of (bkpt_node_t *) 0x7ceb10
(gdb) print *n
$10 = {line = -1, instr = 1.2, skip = 0, count = 0, mode = CSDEBUG_BKPT_INSTR,
next = 0x0}
ad the first time it reaches line 1744 data is
{bkpt_buffer = 0x7ce770, cmd_buffer = 0x7ce9c0,
status = CSDEBUG_STATUS_STOPPED, bkpt_anchor = 0x7ce730,
cur_bkpt = 0x7ceb10, bkpt_cb = 0x401810 |
| Date | 2015-11-24 15:40 |
| From | Andres Cabrera |
| Subject | Re: [Csnd-dev] testDebugger |
Thanks for reviewing john. I'll look and fix tonight. A On 7:32AM, Tue, Nov 24, 2015 jpff <jpff@codemist.co.uk> wrote: Update. Using breakpoints on lines 1675 and 1744 it is clear that the |