On Thu, Nov 25, 2010 at 15:45, Domen Puncer <[email protected]> wrote:
> I can reliably reproduce this one with:
> jtag_khz 1000
> verify_image my_image.elf
> # some prints about too high clock
> reset init
> # openocd aborts
Additional info.
valgrind:
==32465== Invalid free() / delete / delete[]
==32465== at 0x4C270BD: free (vg_replace_malloc.c:366)
==32465== by 0x4B4CD9: Jim_EvalObj (jim.c:527)
==32465== by 0x4B6DB2: Jim_Eval_Named (jim.c:9644)
==32465== by 0x424AA4: handle_reset_command (target.c:505)
==32465== by 0x42F448: script_command_run (command.c:627)
==32465== by 0x4B4E30: Jim_EvalObj (jim.c:9398)
==32465== by 0x4B60E8: Jim_EvalCoreCommand (jim.c:11557)
==32465== by 0x4B4E30: Jim_EvalObj (jim.c:9398)
==32465== by 0x4B83CC: Jim_CatchCoreCommand (jim.c:12372)
==32465== by 0x4B4E30: Jim_EvalObj (jim.c:9398)
==32465== by 0x4B6F8B: Jim_EvalExpression (jim.c:8227)
==32465== by 0x4B7482: Jim_GetBoolFromExpr (jim.c:8269)
==32465== Address 0x7feffeb00 is on thread 1's stack
==32465==
And it's really bugging me, because I can't figure out where exactly.
It disappears if I configure jimtcl with ./configure CFLAGS=-g, also
disappeared when I inserted some printfs in Jim_EvalObj.
I do have some questions about some code:
1.
In jim.c Jim_EvalObj there's a loop:
/* Now copy in the expanded version */
for (k = 0; k < len; k++) {
argv[j++] = wordObjPtr->internalRep.listValue.ele[k];
Jim_IncrRefCount(wordObjPtr->internalRep.listValue.ele[k]);
}
but code only allocates space for extra len-1 objects.
2.
src/target/target.c:
In handle_reg_command, there is:
/* display a register */
if ((CMD_ARGC == 1) || ((CMD_ARGC == 2) && !((CMD_ARGV[1][0] >= '0')
&& (CMD_ARGV[1][0] <= '9'))))
it seems to be that should be written as:
if ((CMD_ARGC == 1) || ((CMD_ARGC == 2) && !((CMD_ARGV[0][0] >= '0')
&& (CMD_ARGV[0][0] <= '9'))))
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development