blob: 68771e34d8f628a25627b1f82e515ef193165814 [file] [log] [blame]
# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
description "Clean up after early-failure.conf if a test isn't happening"
author "chromium-os-dev@chromium.org"
start on stopped crash-boot-collect
task
oom score -100 # This is extremely unlikely to run out of memory
script
# If there is a crash test in progress, try to wait for it to finish.
timeout=120
while [ ${timeout} -gt 0 ] && \
[ -e /run/crash_reporter/crash-test-in-progress ]; do
sleep 5
: $((timeout -= 5))
done
# If the test is still in progress, give up.
if [ -e /run/crash_reporter/crash-test-in-progress ]; then
logger -t "${UPSTART_JOB}" "Timed out waiting for crash test to finish"
exit
fi
# Now we know there's no crash test in progress, which means that the
# EarlyCrash test, if it was running, is done.
# If another crash test starts later, that's okay; it won't need this
# coreutils crash.
# Find crashes:
# * from 'coreutils'
# * from the last 10 minutes
# * invoked as 'sleep 10000'
# And remove them
find /var/spool/crash/ -maxdepth 1 -name "coreutils.*.meta" -mmin -10 \
-exec grep -l upload_var_is_early_boot=true {} + | \
while IFS= read -r file; do
proclog="${file%.meta}.proclog"
if grep -q 'sleep 10000' "${proclog}"; then
base="${file%.meta}"
logger -t "${UPSTART_JOB}" "Cleaning up files:" "${base}"*
rm -vf "${base}"* || true
fi
done
end script