txoof / PaperPi

E-Paper display loop with plugins
97 stars 10 forks source link

segfault at cleanup #153

Closed txoof closed 5 months ago

txoof commented 5 months ago

Describe the bug shutdown and cleanup call results in segmentation fault

To Reproduce Steps to reproduce the behavior:

  1. Run in daemon mode with IT8951 screen attached using paperpi -d
  2. Hit ctrl+c to stop
  3. observe crash

Expected behavior should exit cleanly

Hardware

OS Info Run cat /etc/os-release

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

[main] Section of Config Copy and paste the [main] section of your config file

# CONFIG_VERSION=1.2
[main]
# waveshare display type use HD for IT8951 displays
display_type = HD
# required vcom value for IT8951 screens
vcom = -1.93
# maximum refresh between total screen clear for HD displays
max_refresh = 4
# logging output level
log_level = INFO
# display splash screen (True or False)
splash = True
# rotation of EPD display
# (cable bottom: 0; cable left: -90; cable right: 90; cable top: 180)
rotation = 0
# mirror screen outuput - useful if output to screen appears backwards
mirror = False
# do not wipe screen when shutting down. True: leave image; False: wipe screen (default)
no_wipe = False
# plugin timeout - amount of time in seconds to wait for a hung plugin to complete execution
plugin_timeout = 30

Additional context seg fault:

0:55:40 paperpi :_update_plugins:454 :INFO       - ##########Plugin: Moon Phase##########
20:55:40 paperpi :_update_plugins:467 :INFO       -      PRIORITY: 2 of max 2
^C20:55:45 paperpi :clean_up  :257 :INFO       - cleaning up
Traceback (most recent call last):
  File "/usr/local/paperpi/venv_paperpi/lib/python3.11/site-packages/gpiozero/pins/rpigpio.py", line 217, in _call_when_changed
    super()._call_when_changed()
  File "/usr/local/paperpi/venv_paperpi/lib/python3.11/site-packages/gpiozero/pins/local.py", line 113, in _call_when_changed
    self.state if state is None else state)
    ^^^^^^^^^^
  File "/usr/local/paperpi/venv_paperpi/lib/python3.11/site-packages/gpiozero/pins/__init__.py", line 323, in <lambda>
    lambda self: self._get_state(),
                 ^^^^^^^^^^^^^^^^^
  File "/usr/local/paperpi/venv_paperpi/lib/python3.11/site-packages/gpiozero/pins/rpigpio.py", line 138, in _get_state
    return GPIO.input(self._number)
           ^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: You must setup() the GPIO channel first
/usr/local/bin/paperpi: line 10:  1727 Segmentation fault      $(realpath $PROGRAM_PATH/paperpi.py) "$@"
txoof commented 5 months ago

resolved by updating epdlib