Hi developers,
I've found a bug in src/server/gdb_server.c:2005, function
gdb_log_callback(). A pointer is used without checking if it's still valid.
This is 100% when using GDB to debug a remote target:
1. start openocd to listen for incoming gdb connection
2. setup gdb so that it connects to openocd and let it continue its
execution if the target is halted;
3. from another console kill the GDB process.
4. openocd will segfault in the line above.
Tested with version 0.2 but I verified that no commit touched that part
after the official release.
Attaching configuration file. Note that I've added both gdb-end and
gdb-detach events; if I remove gdb-end (which in my case it's not what
I'm looking for, btw :) Openocd shuts down cleanly.
Feel free to contact me if you need further information.
Best regards.
--
Ing. Luca Ottaviano - lottavi...@develer.com
Develer S.r.l. - http://www.develer.com/
.hardware . software .innovation
Tel.: +39 055 3986627 - ext.: 218
# Change the default telnet port...
telnet_port 4444
# Port for TCL connection.
tcl_port 6666
# GDB connects here
gdb_port 3333
gdb_memory_map enable
interface ft2232
ft2232_device_desc "Amontec JTAGkey"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0xcff8
#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config srst_only srst_pulls_trst
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME sam7
}
if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x3f0f0f0f
}
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id
$_CPUTAPID
set _TARGETNAME [format "%s.cpu" $_CHIPNAME]
target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position
$_TARGETNAME -variant arm7tdmi
$_TARGETNAME configure -event reset-start {
# disable watchdog
mww 0xfffffd44 0x00008000
# enable user reset
mww 0xfffffd08 0xa5000001
# CKGR_MOR : enable the main oscillator
mww 0xfffffc20 0x00000601
sleep 10
# CKGR_PLLR: 96.1097 MHz
mww 0xfffffc2c 0x00481c0e
sleep 10
# PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
mww 0xfffffc30 0x00000007
sleep 10
# MC_FMR: flash mode (FWS=1,FMCN=60)
mww 0xffffff60 0x003c0100
sleep 10
# reset PC
reg pc 00000000
}
$_TARGETNAME configure -event gdb-end { echo "**EVENT: gdb-end" }
$_TARGETNAME configure -event gdb-detach { echo "**EVENT: gdb-detach" }
$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x00200000
-work-area-size 0x4000 -work-area-backup 0
#flash bank <driver> <base> <size> <chip_width> <bus_width>
flash bank at91sam7 0 0 0 0 0
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development