This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

src/gdb ChangeLog remote.c


CVSROOT:	/cvs/src
Module name:	src
Changes by:	palves@sourceware.org	2013-04-02 13:51:07

Modified files:
	gdb            : ChangeLog remote.c 

Log message:
	unpush the remote target if serial_write fails.
	
	PR gdb/15275 notes that when debugging with a remote connection over a
	serial link and the link is disconnected, say by disconnecting USB
	serial port, the GDB quit command no longer works:
	
	(gdb)
	tar ext /dev/ttyACM0
	&"tar ext /dev/ttyACM0\n"
	~"Remote debugging using /dev/ttyACM0\n"
	^done
	(gdb)
	set debug remote 1
	&"set debug remote 1\n"
	^done
	(gdb)
	quit
	&"quit\n"
	&"Sending packet: $qTStatus#49..."
	&"putpkt: write failed: Input/output error.\n"
	^error,msg="putpkt: write failed: Input/output error."
	(gdb)
	(gdb)
	quit
	&"quit\n"
	&"Sending packet: $qTStatus#49..."
	&"putpkt: write failed: Input/output error.\n"
	^error,msg="putpkt: write failed: Input/output error."
	
	This is not reproducible with TCP connections, as with that, sending
	doesn't error out, but instead the error is detected on the subsequent
	readchar.  When that read fails, we unpush the remote target, and
	throw TARGET_CLOSE_ERROR.  To address PR gdb/15275, instead of
	catching the error in remote_get_trace_status as presently done (which
	leaves this same issue latent for another packet to trip on), or of
	making ser-unix.c fake success too on failed writes, so we'd get to
	readchar detecting the error on serial ports too, better let the error
	propagate out of serial_write, and catch it at the remote.c level,
	throwing away the target if writing fails too, instead of delaying
	that until the next read.
	
	gdb/
	2013-04-02  Pedro Alves  <palves@redhat.com>
	
	PR gdb/15275
	
	* remote.c (send_interrupt_sequence): Use remote_serial_write.
	(remote_serial_write): New function.
	(putpkt_binary, getpkt_or_notif_sane_1): Use remote_serial_write.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.15354&r2=1.15355
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/remote.c.diff?cvsroot=src&r1=1.535&r2=1.536


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]