Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 353939

Summary: Ctrl+C while running etc-update updates all config files (like selecting '-5') before exiting
Product: Portage Development Reporter: Joshua Kinard <kumba>
Component: ToolsAssignee: Portage Tools Team <tools-portage>
Status: RESOLVED INVALID    
Severity: major CC: pchrist
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Joshua Kinard gentoo-dev 2011-02-07 08:16:02 UTC
Hitting Ctrl+C while in etc-update to break out of the program will auto-update all remaining config files in the list.  This is the same behavior as selecting "-5" while interactively in the program.

Reproducible: Always

Steps to Reproduce:
1. Update some packages that include updates to config files.
2. Run etc-update.
3. Hit Ctrl+C while in etc-update

Actual Results:  
Remaining config file updates get merged without warning, then programs exits.  If there were pending updates for key configuration files, this could cause them to get overwritten by package defaults, which may lead to system breakage.  In my case, sshd_config got overwritten, but I was able to recover from a backup.

Expected Results:  
Program should simply exit.
Comment 1 Zac Medico gentoo-dev 2011-02-07 08:23:59 UTC
The signal handlers look like this:

trap "die terminated 1" SIGTERM
trap "die interrupted 1" SIGINT

And the die function looks like this:

die() {
	trap SIGTERM
	trap SIGINT

	if [ "$2" -eq 0 ]; then
		echo "Exiting: ${1}"
		scan > /dev/null
		[ ${count} -gt 0 ] && echo "NOTE: ${count} updates remaining"
	else
		echo "ERROR: ${1}"
	fi

	rm -rf "${TMP}"
	exit ${2}
}

So, it seems like it should simply say "ERROR: interrupted", remove temp files, and exit. What am I missing?
Comment 2 SpanKY gentoo-dev 2011-02-07 21:36:55 UTC
i certainly hit CTRL+C in the middle of an etc-update from time to time and have yet to his this behavior ...
Comment 3 Joshua Kinard gentoo-dev 2011-02-09 21:41:33 UTC
Okay, I've tried reproducing this several different ways on one of my MIPS machines, but it exits normally.

The amd64 box, which is where I saw this happen, hasn't updated any packages yet to require running etc-update again.  I believe it couldn't have been me typing '-5' and then forgetting, because sshd_config was one of the last files that wanted to be updated (after webapp-config's vhost setup).  But I only looked at the merge differences for /etc/rc.conf (the first config file that wanted an update), merged that, then thought I'd messed something up.  So I was sitting back at the etc-update prompt when I hit Ctrl+C, looked at /etc/rc.conf, then exited nano.

Since I was in a screen session, I scrolled up (Ctrl+A up/down), and saw that all the remaining config files had been replaced.  I assumed it was the Ctrl+C keypress that did that.

Commented it (somewhat snarkily) in #gentoo-dev, and robbat2 mentioned he'd run into the same issue a few times, randomly, and suggested I open a bug.

Could it be possible that there's some random issue that makes it difficult to reproduce?  I'll keep trying Ctrl+C at etc-update prompts to see if it re-occurs.
Comment 4 Joshua Kinard gentoo-dev 2011-02-28 07:43:42 UTC
Still can't reproduce.  Assuming this is a heisenbug, or I had a minor temporal accident and fat fingered it somehow.