mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 06:06:43 +00:00
Merge pull request #3657 from stefansaraev/crashlogs
[rfc] kodi crashlogs
This commit is contained in:
commit
bb709490ae
@ -422,6 +422,7 @@ post_makeinstall_target() {
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/kodi
|
||||
cp $PKG_DIR/scripts/kodi-config $INSTALL/usr/lib/kodi
|
||||
cp $PKG_DIR/scripts/kodi.sh $INSTALL/usr/lib/kodi
|
||||
cp $PKG_DIR/scripts/kodi-hacks $INSTALL/usr/lib/kodi
|
||||
cp $PKG_DIR/scripts/kodi-sources $INSTALL/usr/lib/kodi
|
||||
# TODO: remove this later:
|
||||
|
100
packages/mediacenter/kodi/scripts/kodi.sh
Executable file
100
packages/mediacenter/kodi/scripts/kodi.sh
Executable file
@ -0,0 +1,100 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2008-2013 Team XBMC
|
||||
# http://xbmc.org
|
||||
#
|
||||
# This Program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This Program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
. /etc/profile
|
||||
|
||||
trap cleanup TERM
|
||||
|
||||
SAVED_ARGS="$@"
|
||||
CRASHLOG_DIR=/storage/.kodi/temp
|
||||
|
||||
cleanup() {
|
||||
# make systemd happy by not exiting immediately but
|
||||
# wait for kodi to exit
|
||||
while killall -0 kodi.bin &>/dev/null; do
|
||||
sleep 0.5
|
||||
done
|
||||
}
|
||||
|
||||
command_exists()
|
||||
{
|
||||
command -v $1 &>/dev/null
|
||||
}
|
||||
|
||||
single_stacktrace()
|
||||
{
|
||||
# core filename is "core.*kodi.bin.*"
|
||||
find "$1" -name 'core.*kodi.bin.*' | while read core; do
|
||||
echo "=====> Core file: "$core"" >> $FILE
|
||||
echo " =========================================" >> $FILE
|
||||
gdb /usr/lib/kodi/kodi.bin --core="$core" --batch -ex "thread apply all bt" 2>/dev/null >> $FILE
|
||||
rm -f "$core"
|
||||
done
|
||||
}
|
||||
|
||||
print_crash_report()
|
||||
{
|
||||
if [ ! -d $CRASHLOG_DIR ] ; then
|
||||
mkdir -p $CRASHLOG_DIR
|
||||
fi
|
||||
FILE="$CRASHLOG_DIR/kodi_crashlog.log"
|
||||
echo "############## kodi CRASH LOG ###############" > $FILE
|
||||
echo >> $FILE
|
||||
echo "################ SYSTEM INFO ################" >> $FILE
|
||||
echo -n " Date: " >> $FILE
|
||||
date >> $FILE
|
||||
echo " kodi Options: $SAVED_ARGS" >> $FILE
|
||||
echo -n " Arch: " >> $FILE
|
||||
uname -m >> $FILE
|
||||
echo -n " Kernel: " >> $FILE
|
||||
uname -rvs >> $FILE
|
||||
echo -n " Release: " >> $FILE
|
||||
. /etc/os-release
|
||||
echo $NAME $VERSION >> $FILE
|
||||
echo "############## END SYSTEM INFO ##############" >> $FILE
|
||||
echo >> $FILE
|
||||
echo "############### STACK TRACE #################" >> $FILE
|
||||
if command_exists gdb; then
|
||||
single_stacktrace /storage/.cache/cores
|
||||
else
|
||||
echo "gdb not installed, can't get stack trace." >> $FILE
|
||||
fi
|
||||
echo "############# END STACK TRACE ###############" >> $FILE
|
||||
echo >> $FILE
|
||||
echo "################# LOG FILE ##################" >> $FILE
|
||||
echo >> $FILE
|
||||
cat /storage/.kodi/temp/kodi.log >> $FILE
|
||||
echo >> $FILE
|
||||
echo "############### END LOG FILE ################" >> $FILE
|
||||
echo >> $FILE
|
||||
echo "############ END kodi CRASH LOG #############" >> $FILE
|
||||
echo "Crash report available at $FILE"
|
||||
}
|
||||
|
||||
if command_exists gdb; then
|
||||
ulimit -c unlimited
|
||||
fi
|
||||
|
||||
# clean up any stale cores. just in case
|
||||
rm -f /storage/.cache/cores/*
|
||||
|
||||
/usr/lib/kodi/kodi.bin $SAVED_ARGS
|
||||
RET=$?
|
||||
|
||||
if [ $(( ($RET >= 131 && $RET <= 136) || $RET == 139 )) = "1" ] ; then
|
||||
# Crashed with core dump
|
||||
print_crash_report
|
||||
fi
|
||||
|
||||
exit $RET
|
@ -10,9 +10,8 @@ Environment=HOME=/storage
|
||||
EnvironmentFile=-/run/openelec/kodi.conf
|
||||
EnvironmentFile=-/run/openelec/debug/kodi.conf
|
||||
ExecStartPre=-/usr/lib/kodi/kodi-config
|
||||
ExecStart=/bin/sh -c ". /etc/profile; exec /usr/lib/kodi/kodi.bin --standalone -fs $KODI_ARGS $KODI_DEBUG"
|
||||
# keep KillMode=process unless there is no good reason to switch to cgroup
|
||||
KillMode=process
|
||||
ExecStart=/usr/lib/kodi/kodi.sh --standalone -fs $KODI_ARGS $KODI_DEBUG
|
||||
ExecStop=/bin/kill -TERM $MAINPID
|
||||
TimeoutStopSec=5
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
|
1
packages/sysutils/busybox/sysctl.d/99-coredump.conf
Normal file
1
packages/sysutils/busybox/sysctl.d/99-coredump.conf
Normal file
@ -0,0 +1 @@
|
||||
kernel.core_pattern=/storage/.cache/cores/core.%E.%t.%p
|
@ -21,4 +21,5 @@ d /var/media 0755 root root - -
|
||||
|
||||
f /var/run/utmp 1777 root root - -
|
||||
d /storage/.update 0755 root root - -
|
||||
d /storage/.cache/cores 0755 root root - -
|
||||
d /storage/.cache/services 0755 root root - -
|
||||
|
@ -173,6 +173,7 @@ CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
# CONFIG_PCSPKR_PLATFORM is not set
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
@ -640,11 +641,12 @@ CONFIG_AMD_NB=y
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
CONFIG_BINFMT_SCRIPT=y
|
||||
CONFIG_HAVE_AOUT=y
|
||||
# CONFIG_BINFMT_AOUT is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
# CONFIG_COREDUMP is not set
|
||||
CONFIG_COREDUMP=y
|
||||
CONFIG_HAVE_ATOMIC_IOMAP=y
|
||||
CONFIG_IOSF_MBI=m
|
||||
CONFIG_PMC_ATOM=y
|
||||
|
@ -187,6 +187,7 @@ CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
# CONFIG_PCSPKR_PLATFORM is not set
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
@ -623,10 +624,11 @@ CONFIG_AMD_NB=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_COMPAT_BINFMT_ELF=y
|
||||
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
CONFIG_BINFMT_SCRIPT=y
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
# CONFIG_COREDUMP is not set
|
||||
CONFIG_COREDUMP=y
|
||||
CONFIG_IA32_EMULATION=y
|
||||
# CONFIG_IA32_AOUT is not set
|
||||
# CONFIG_X86_X32 is not set
|
||||
|
@ -147,6 +147,7 @@ CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
@ -482,10 +483,11 @@ CONFIG_VFP=y
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
CONFIG_BINFMT_SCRIPT=y
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_COREDUMP is not set
|
||||
CONFIG_COREDUMP=y
|
||||
|
||||
#
|
||||
# Power management options
|
||||
|
@ -143,6 +143,7 @@ CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
@ -584,10 +585,11 @@ CONFIG_KERNEL_MODE_NEON=y
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
|
||||
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
|
||||
CONFIG_BINFMT_SCRIPT=y
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_COREDUMP is not set
|
||||
CONFIG_COREDUMP=y
|
||||
|
||||
#
|
||||
# Power management options
|
||||
|
Loading…
x
Reference in New Issue
Block a user