Thanks for reporting.
Please test 8641: drivers/cmsis_dap: fix segfault in quirk mode setting |
https://review.openocd.org/c/openocd/+/8641
---
**[tickets:#420] Segfault from cmsis-dap adapter quirk**
**Status:** new
**Milestone:** 0.11.0
**Created:** Wed Jan 24, 2024 04:08 PM UTC by Mark Featherston
**Last Updated:** Wed Jan 24, 2024 04:08 PM UTC
**Owner:** nobody
I'm testing against the latest code in git
"151b743714382120dbe0dee0e0eeb75826ef5b3a"
I found when using this config file:
~~~
adapter driver cmsis-dap
cmsis-dap vid_pid 0x35b0 0x0001
cmsis-dap quirk on
transport select jtag
adapter speed 25000000
~~~
It segfaults here:
~~~
Program received signal SIGSEGV, Segmentation fault.
0x0000000000416233 in cmsis_dap_handle_quirk_command (cmd=0x7fffffffd810) at
src/jtag/drivers/cmsis_dap.c:2232
2232 COMMAND_PARSE_ENABLE(CMD_ARGV[0],
cmsis_dap_handle->quirk_mode);
Missing separate debuginfos, use: dnf debuginfo-install
capstone-4.0.2-15.fc39.x86_64 glibc-2.38-14.fc39.x86_64
hidapi-0.14.0-2.fc39.x86_64 libcap-2.48-9.fc39.x86_64
libftdi-1.5-10.fc39.x86_64 libgcc-13.2.1-6.fc39.x86_64
libgpiod-2.0.2-1.fc39.x86_64 libjaylink-0.3.0-3.fc39.x86_64
libusb1-1.0.26-3.fc39.x86_64 systemd-libs-254.7-1.fc39.x86_64
(gdb) bt
#0 0x0000000000416233 in cmsis_dap_handle_quirk_command (cmd=0x7fffffffd810)
at src/jtag/drivers/cmsis_dap.c:2232
#1 0x0000000000489785 in exec_command (argv=0x80aef0, argc=2, c=0x80b650,
context=0x7d82a0, interp=0x7d8300)
at src/helper/command.c:520
#2 jim_command_dispatch (interp=0x7d8300, argc=2, argv=0x80aef0) at
src/helper/command.c:931
#3 0x00000000005d32cf in JimInvokeCommand ()
#4 0x0000000700000006 in ?? ()
#5 0x000000000080af90 in ?? ()
#6 0x00000003007d8300 in ?? ()
#7 0x00007fffffffdb20 in ?? ()
#8 0x000000000064bec2 in ?? ()
#9 0x0000000000000005 in ?? ()
#10 0x0000000000000000 in ?? ()
~~~~
In gdb I found "cmsis_dap_handle" is null when this function is called:
~~~
COMMAND_HANDLER(cmsis_dap_handle_quirk_command)
{
if (CMD_ARGC > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (CMD_ARGC == 1)
COMMAND_PARSE_ENABLE(CMD_ARGV[0], cmsis_dap_handle->quirk_mode);
command_print(CMD, "CMSIS-DAP quirk workarounds %s",
cmsis_dap_handle->quirk_mode ? "enabled" :
"disabled");
return ERROR_OK;
}
~~~
I'm not familiar with the command line parsing to know the proper fix for this,
but hard coding it after the cmsis_dap_handle is set works.
---
Sent from sourceforge.net because [email protected] is
subscribed to https://sourceforge.net/p/openocd/tickets/
To unsubscribe from further messages, a project admin can change settings at
https://sourceforge.net/p/openocd/admin/tickets/options. Or, if this is a
mailing list, you can unsubscribe from the mailing list.