esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
290 stars 35 forks source link

Random crash with Backtrace corrupted #5173

Open backinside opened 10 months ago

backinside commented 10 months ago

The problem

I have a fairly simple config running on ~10 NSPanels, and some of the panels regularly restart. I've managed to get a crash through serial, but the Backtrace corrupted It looks like something was corrupted in the handleHeaderResponse output as well Any idea, how I can start tracking down the source of the issue?

Which version of ESPHome has the issue?

2023.8.2

What type of installation are you using?

pip

Which version of Home Assistant has the issue?

No response

What platform are you using?

ESP32

Board

sonoff nspanel

Component causing the issue

No response

Example YAML snippet

# Set some variables for convenience
substitutions:
  node_name: xxxxxxxxxxxxx
  device_name: NSPanel
  target_temp_normal: 21.0 °C
  target_temp_away: 18.0 °C

# Note: this may not be needed if the pull request has been merged.
# Check https://github.com/esphome/esphome/pull/2956 for current status.
external_components:
  - source: github://pr#2956
    components: [nextion]
    refresh: 1h

esphome:
  name: $node_name
  comment: $device_name

esp32:
  board: esp32dev

wifi:
  ssid: "SSID"
  password: "PASS"
  # Optional manual IP
  #manual_ip:
  #  static_ip: 192.168.10.30
  #  gateway: 192.168.10.1
  #  subnet: 255.255.255.0
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: $node_name Fallback Hotspot
    password: "FBPASS"   
# Enable logging

captive_portal:

http_request:
  useragent: esphome/device
  timeout: 10s

logger:
  level: VERBOSE
  logs:
    sensor: ERROR

interval:
  - interval: 30s
    then:
      if:
        condition:
          wifi.connected:
        then:
          - script.execute:
              id: store
              key: targettemp
              value: !lambda return id(caldera).target_temperature;

# Enable wireless updates
ota:
  password: ""

# Enable Home Assistant API
#api:
#  services:
    # Service to play a song
#    - service: play_rtttl
#      variables:
#        song_str: string
#      then:
#        - rtttl.play:
#            rtttl: !lambda 'return song_str;'
#    - service: upload_tft
#      then:
#        - lambda: 'id(disp1)->upload_tft();'
#    - service: send_command
#      variables:
#        cmd: string
#      then:
#        - lambda: 'id(disp1).send_command_printf("%s", cmd.c_str());'

# A reboot button is always useful
button:
  - platform: restart
    name: Restart $device_name
  - platform: template
    name: Update TFT on $device_name
    on_press:
      then:
        - lambda: 'id(disp1)->upload_tft();'

web_server:
  port: 80

# Define some inputs
binary_sensor:
  # Switches between HEAT or OFF mode
  - platform: gpio
    name: $device_name Left Button
    pin:
      number: 14
      inverted: true
    on_press:
      then:
        - climate.control:
            id: caldera
            target_temperature: !lambda "return id(caldera).target_temperature - 0.1;"
        - script.execute:
            id: store
            key: targettemp
            value: !lambda return id(caldera).target_temperature;

  - platform: gpio
    name: $device_name Right Button
    pin:
      number: 27
      inverted: true
    on_press:
      then:
        - climate.control:
            id: caldera
            target_temperature: !lambda "return id(caldera).target_temperature + 0.1;"
        - script.execute:
            id: store
            key: targettemp
            value: !lambda return id(caldera).target_temperature;

  - platform: nextion
    name: $device_name Up Button
    page_id: 0
    component_id: 3
    on_press:
      then:
        - climate.control:
            id: caldera
            target_temperature: !lambda "return id(caldera).target_temperature + 0.1;"
        - script.execute:
            id: store
            key: targettemp
            value: !lambda return id(caldera).target_temperature;

  - platform: nextion
    name: $device_name Update
    page_id: 0
    component_id: 15
    on_press:
      then:
        - script.execute: fn1
        - script.execute: fn2

  - platform: nextion
    name: $device_name Down Button
    page_id: 0
    component_id: 4
    on_press:
      then:
        - climate.control:
            id: caldera
            target_temperature: !lambda "return id(caldera).target_temperature - 0.1;"
        - script.execute:
            id: store
            key: targettemp
            value: !lambda return id(caldera).target_temperature;

dallas:
  - pin: 23
    update_interval: 1s

sensor:
  - platform: uptime
    name: Uptime Sensor
  - platform: wifi_signal
    name: $device_name WiFi Signal
    update_interval: 60s

  - platform: adc
    id: ntc_source
    pin: 38
    update_interval: 1s
    attenuation: 11db

  - platform: resistance
    id: resistance_sensor
    sensor: ntc_source
    configuration: DOWNSTREAM
    resistor: 11.2kOhm

  - platform: dallas
    id: temperature_ext
    index: 0
    name: "External Temperature"
    on_value:
      then:
        - lambda: 'id(disp1).set_component_text_printf("page0.fTemp", "%.1f""\xb0", x);'
        - script.execute:
            id: store
            key: floortemp
            value: !lambda return x;

  - platform: ntc
    id: temperature
    sensor: resistance_sensor
    accuracy_decimals: 2
    filters:
      - median:
          window_size: 15
          send_every: 10
          send_first_at: 3
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 10kOhm
    name: $device_name Temperature
    on_value:
      then:
        - lambda: 'id(disp1).set_component_text_printf("page0.intTemp", "%.1f""\xb0", x);'
        - script.execute:
            id: store
            key: roomtemp
            value: !lambda return x;

  # Grab current temperature from Home Assistant

  - platform: nextion
    id: current_page
    name: "current_page"
    internal: true
    accuracy_decimals: 0
    variable_name: dp
    update_interval: 1s

script:
  - id: fn1
    then:
      - lambda: |-
          ESP_LOGD("custom", "Trying to exit reparse mode");
      - uart.write:
          id: tf_uart
          data: "DRAKJHSUYDGBNCJHGJKSHBDN"
      - uart.write:
          id: tf_uart
          data: [0xFF, 0xFF, 0xFF]
      - lambda: |-
          ESP_LOGD("custom", "Trying to exit reparse mode - Done");
  - id: fn2
    then:
      - lambda: |-
          ESP_LOGD("custom", "Trying to init upload");
          id(disp1)->upload_tft();
          ESP_LOGD("custom", "Trying to init upload - Done");
  - id: store
    parameters:
      key: string
      value: float
    then:
      - http_request.get:
          url: !lambda |-
            std::string num_text = std::to_string(value);
            std::string rounded = num_text.substr(0, num_text.find(".")+2);
            return ((std::string) "http://10.0.0.1/action/Store?id=" + to_string("$node_name") + "&key=" + key + "&value=" + rounded);
          headers:
            Content-Type: application/json
          verify_ssl: false
          on_response:
            then:
              - logger.log:
                  format: 'Response status: %d, Duration: %u ms'
                  args:
                    - status_code
                    - duration_ms

  - id: tft_wake_up
    then:
      - lambda: |-
          id(disp1).send_command_printf("page0.sleep_cnt.val=page0.sleep_timeout.val");
          id(disp1).send_command_printf("page0.sleep_timer.en=1");
          if (id(current_page).state!=0)
            id(disp1).send_command_printf("page 0");
          id(disp1).send_command_printf("dim=page0.brightness.val");

# Define some outputs
switch:
  # Relay 2 is the thermostat switch, Relay 1 was physically removed!
  - platform: gpio
    name: $device_name Relay
    id: relay_2
    internal: true # it should not be activated directly by home assitant
    pin:
      number: 19

  # Pin 4 always needs to be on to power up the display
  - platform: gpio
    id: screen_power
    entity_category: config
    pin:
      number: 4
      inverted: true
    restore_mode: ALWAYS_ON

  - platform: template
    name: $device_name auto sleep
    id: auto_sleep
    entity_category: config
    restore_mode: RESTORE_DEFAULT_ON
    optimistic: true
    on_turn_on:
      - lambda: 'id(disp1).send_command_printf("page0.disable_sleep.val=0");'
    on_turn_off:
      - lambda: 'id(disp1).send_command_printf("page0.disable_sleep.val=1");'

number:
  - platform: template
    name: $device_name Brightness
    id: brightness
    entity_category: config
    unit_of_measurement: '%'
    icon: "mdi:brightness-percent"
    min_value: 0
    max_value: 100
    step: 1
    initial_value: 30
    set_action:
      then:
        - lambda: |-
            id(disp1).send_command_printf("page0.sleep_timer.en=1");
            if (id(current_page).state!=0)
              id(disp1).send_command_printf("page 0");
            id(disp1).set_backlight_brightness(x/100);
  # Sets the sleep timer value
  # requires code running in the nextion tft to make a 1 second period timer
  # with a counter and a variable to store the timeout
  - platform: template
    name: $device_name Sleep timeout
    id: sleep_timeout
    entity_category: config
    unit_of_measurement: 's'
    icon: "mdi:timer"
    min_value: 3
    max_value: 300
    step: 1
    initial_value: 30
    set_action:
      then:
        - lambda: |-
            id(disp1).send_command_printf("page0.sleep_timeout.val=%i", (int)x);  // set the timeout
            id(disp1).send_command_printf("page0.sleep_cnt.val=%i", (int)x);      // reset the counter to its maximum

# Configure the internal bleeper
output:
  - platform: ledc
    id: buzzer_out
    pin:
      number: 21

# Enable ringtone music support
rtttl:
  id: buzzer
  output: buzzer_out

# Configure UART for communicating with the screen
uart:
  id: tf_uart
  tx_pin: 16
  rx_pin: 17
  baud_rate: 115200

# Configure the screen
display:
  - platform: nextion
    id: disp1
    uart_id: tf_uart
    tft_url: "http://10.0.0.1/nspanel_thermostat_orig.tft"
    on_setup:
      then:
        - number.set:
            id: brightness
            value: 30

#        - rtttl.play: "twobits:d=4,o=5,b=220:c6,8g,8g,a,g,p,b,c6"

# Single-point thermostat (for heating only)
climate:
  - platform: thermostat
    id: caldera
    name:  $device_name Thermostat
    sensor: temperature
    preset:
    -  name: default_target_temperature_low
       default_target_temperature_low: $target_temp_normal
    -  name: Away
       default_target_temperature_low: $target_temp_away
    heat_deadband: 0.2
    heat_overrun: 0.2
    min_heating_off_time: 10s
    min_heating_run_time: 10s
    min_idle_time: 30s
    heat_action:
      - switch.turn_on: relay_2
    idle_action:
      - switch.turn_off: relay_2
    on_state:
      - lambda: 'id(disp1).set_component_text_printf("page0.setTemp", "%.1f""\xb0", id(caldera).target_temperature);'
    visual:
      min_temperature: 10
      max_temperature: 30
      temperature_step: 0.1

Anything in the logs that might be useful for us?

[37255597][D][HTTPClient.cpp:408] disconnect(): tcp is closed

[37255597][V][HTTPClient.cpp:252] beginInternal(): url: http://10.0.0.1/action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.0
[37255603][D][HTTPClient.cpp:303] beginInternal(): protocol: http, host: 10.0.0.1 port: 80 url: /action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.0
[37255616][D][HTTPClient.cpp:598] sendRequest(): request type: 'GET' redirCount: 0

[37255635][D][HTTPClient.cpp:1156] connect():  connected to 10.0.0.1:80
[37255870][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'HTTP/1.1 200 OK'
[37255871][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Content-Security-Policy: default-src 'self' flow.dev.xcite.hu flow.xcite.hu 'unsafe-inline' 'unsafe-eval' data:; report-uri /report'
[37255884][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'X-XSS-Protection: 1; mode=block; report=/report'
[37255894][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Expect-CT: max-age=0, enforce, report-uri=/report'
[37255904][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Strict-Transport-Security: max-age=31536000; includeSubDomains'
[37255915][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'X-NO-BREACH: am7P'
[37255922][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'X-Frame-Options: sameorigin'
[37255930][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Cache-Control: private, no-cache, no-store, must-revalidate'
[37255941][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Pragma: no-cache'
[37255948][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Expires: Thu, 01 Jan 1970 00:00:00 GMT'
[37255957][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Access-Control-Allow-Origin: *'
[37255966][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Access-Control-Allow-Headers: *'
[37255974][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Content-Type: application/json;charset=utf-8'
[37255984][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Content-Length: 14'
[37255991][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Server: Jetty(9.4.39.v20210325)'
[37256000][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: ''
[37256005][D][HTTPClient.cpp:1307] handleHeaderResponse(): code: 200
[37256011][D][HTTPClient.cpp:1310] handleHeaderResponse(): size: 14
[37256017][D][HTTPClient.cpp:628] sendRequest(): sendRequest code=200

[D][main:268]: Response status: 200, Duration: 408 ms
[D][http_request:099]: HTTP Request completed; URL: http://10.0.0.1/action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.0; Code: 200; Duration: 408 ms
[37256046][D][HTTPClient.cpp:388] disconnect(): still data in buffer (14), clean up.

[37256052][E][WiFiClient.cpp:517] flush(): fail on fd 49, errno: 11, "No more processes"
[37256065][D][HTTPClient.cpp:393] disconnect(): tcp keep open for reuse
[V][json:036]: Attempting to allocate 512 bytes for JSON serialization
[V][json:056]: Size after shrink 80 bytes
[D][nextion:439]: Got touch page=0 component=3 type=RELEASE
[D][binary_sensor:036]: 'NSPanel Up Button': Sending state OFF
[V][json:036]: Attempting to allocate 512 bytes for JSON serialization
[V][json:056]: Size after shrink 80 bytes
[D][nextion:439]: Got touch page=0 component=3 type=PRESS
[D][binary_sensor:036]: 'NSPanel Up Button': Sending state ON
[D][climate:011]: 'NSPanel Thermostat' - Setting
[D][climate:040]:   Target Temperature: 11.10
[D][climate:378]: 'NSPanel Thermostat' - Sending state:
[D][climate:381]:   Mode: OFF
[D][climate:383]:   Action: OFF
[D][climate:401]:   Current Temperature: 21.54°C
[D][climate:407]:   Target Temperature: 11.10°C
[V][json:036]: Attempting to allocate 512 bytes for JSON serialization
[V][json:056]: Size after shrink 196 bytes
[37256171][D][HTTPClient.cpp:408] disconnect(): tcp is closed

[37256172][V][HTTPClient.cpp:252] beginInternal(): url: http://10.0.0.1/action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.1
[37256178][D][HTTPClient.cpp:303] beginInternal(): protocol: http, host: 10.0.0.1 port: 80 url: /action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.1
[37256192][D][HTTPClient.cpp:598] sendRequest(): request type: 'GET' redirCount: 0

[37256212][D][HTTPClient.cpp:1156] connect():  connected to 10.0.0.1:80
[37256477][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'HTTP/1.1 200 OK'
[37256478][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Content-Security-Policy: default-src 'self' flow.dev.xcite.hu flow.xcite.hu 'unsafe-inline' 'unsafe-eval' data:; report-uri /report'
[37256491][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'X-XSS-Protection: 1; mode=block; report=/report'
[37256501][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Expect-CT: max-age=0, enforce, report-uri=/report'
[37256511][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Strict-Transport-Security: max-age=31536000; includeSubDomains'
[37256522][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'X-NO-BREACH: 6z6a9Tc08o7ZHFR3'
[37256530][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'X-Frame-Options: sameorigin'
[37256538][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Cache-Control: private, no-cache, no-store, must-revalidate'
[37256549][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Pragma: no-cache'
[37256556][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Expires: Thu, 01 Jan 1970 00:00:00 GMT'
[37256565][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Access-Control-Allow-Origin: *'
[37256574][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Access-Control-Allow-Headers: *'
[37256582][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Content-Type: application/json;charset=utf-8'
[37256592][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Content-Length: 14'
[37256599][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Server: Jetty(9.4.39.v20210325)'
[37256608][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: ''
[37256614][D][HTTPClient.cpp:1307] handleHeaderResponse(): code: 200
[37256620][D][HTTPClient.cpp:1310] handleHeaderResponse(): size: 14
[37256626][D][HTTPClient.cpp:628] sendRequest(): sendRequest code=200

[D][main:268]: Response status: 200, Duration: 440 ms
[D][http_request:099]: HTTP Request completed; URL: http://10.0.0.1/action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.1; Code: 200; Duration: 440 ms
[37256654][D][HTTPClient.cpp:388] disconnect(): still data in buffer (14), clean up.

[37256660][E][WiFiClient.cpp:517] flush(): fail on fd 49, errno: 11, "No more processes"
[37256671][D][HTTPClient.cpp:393] disconnect(): tcp keep open for reuse
[V][json:036]: Attempting to allocate 512 bytes for JSON serialization
[V][json:056]: Size after shrink 80 bytes
[D][nextion:439]: Got touch page=0 component=3 type=RELEASE
[D][binary_sensor:036]: 'NSPanel Up Button': Sending state OFF
[V][json:036]: Attempting to allocate 512 bytes for JSON serialization
[V][json:056]: Size after shrink 80 bytes
[D][nextion:439]: Got touch page=0 component=3 type=PRESS
[D][binary_sensor:036]: 'NSPanel Up Button': Sending state ON
[D][climate:011]: 'NSPanel Thermostat' - Setting
[D][climate:040]:   Target Temperature: 11.20
[D][climate:378]: 'NSPanel Thermostat' - Sending state:
[D][climate:381]:   Mode: OFF
[D][climate:383]:   Action: OFF
[D][climate:401]:   Current Temperature: 21.54°C
[D][climate:407]:   Target Temperature: 11.20°C
[V][json:036]: Attempting to allocate 512 bytes for JSON serialization
[V][json:056]: Size after shrink 196 bytes
[37256779][D][HTTPClient.cpp:408] disconnect(): tcp is closed

[37256780][V][HTTPClient.cpp:252] beginInternal(): url: http://10.0.0.1/action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.2
[37256786][D][HTTPClient.cpp:303] beginInternal(): protocol: http, host: 10.0.0.1 port: 80 url: /action/Store?id=xxxxxxxxxxxxx&key=targettemp&value=11.2
[37256800][D][HTTPClient.cpp:598] sendRequest(): request type: 'GET' redirCount: 0

[37256819][D][HTTPClient.cpp:1156] connect():  connected to 10.0.0.1:80
[37257094][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'HTTP/1.1 200 OK'
[37257095][V][HTTPClient.cpp:1250] handleHeaderResponse(): RX: 'Content-Security-Policy: default-src 727lf'2) oaskev.t: Te.hu ftow.xg ge.hu 'ggerfe-inli e' 'uning teval'did n:t report-ue  /rehdog i
[3723710358V][HTsPCldt:  - p:opT0]  (CdU He
oEk; 727ort2) taskrt': Tasrotcuriontly;r nodeg:
18 [V]273TPC)ieaskcppt: CP] 1: doopeaskrRE p372e()82) tasExwdct-CT:rtingag

abort() was called at PC 0x40108290 on core 0

Backtrace:0x40083d05:0x3ffbeaec |<-CORRUPTED

ELF file SHA256: 0000000000000000

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13132
load:0x40080400,len:3036
entry 0x400805e4
[     7][D][esp32-hal-cpu.c:244] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz
[I][logger:262]: Log initialized
[C][ota:469]: There have been 0 suspected unsuccessful boot attempts.
[D][esp32.preferences:114]: Saving 1 preferences to flash...
[V][esp32.preferences:126]: sync: key: 233825507, len: 4
[D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[I][app:029]: Running through setup()...
[V][app:030]: Sorting components by setup priority...
[C][uart.arduino_esp32:077]: Setting up UART...
[C][switch.gpio:011]: Setting up GPIO Switch 'NSPanel Relay'...
[D][switch:016]: 'NSPanel Relay' Turning OFF.
[D][switch:055]: 'NSPanel Relay': Sending state OFF
[D][switch:016]: 'NSPanel Relay' Turning OFF.
[C][switch.gpio:011]: Setting up GPIO Switch 'screen_power'...
[D][switch:012]: 'screen_power' Turning ON.
[D][switch:055]: 'screen_power': Sending state ON

Additional information

No response

backinside commented 10 months ago

I've caught another crash `Guru Meditation Error: Core 0 panic'ed (IllegalInstruction). Exception was unhandled. Memory dump at 0x4011ef54: 20b33020 f4e5aa2a 00f01dff Core 0 register dump: PC : 0x4011ef5b PS : 0x00060830 A0 : 0x80117374 A1 : 0x3ffbc6b0
A2 : 0x4011ef5b A3 : 0x3ffc4774 A4 : 0x3f411688 A5 : 0x00310c54
A6 : 0x3ffda260 A7 : 0x00000000 A8 : 0x8011f054 A9 : 0x3ffbc690
A10 : 0x3f411688 A11 : 0x3ffb35e8 A12 : 0x3ffafb54 A13 : 0x00000000
A14 : 0x00000001 A15 : 0x00000014 SAR : 0x00000008 EXCCAUSE: 0x00000000
EXCVADDR: 0x00000000 LBEG : 0x40089dd0 LEND : 0x40089de6 LCOUNT : 0xffffffff

Backtrace:0x4011ef58:0x3ffbc6b00x40117371:0x3ffbc6d0

ELF file SHA256: 0000000000000000

Rebooting... `

github-actions[bot] commented 6 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.