Skip to content

[Bug]: Heltec Wireless Paper with InkHud rebooting constantly #8082

Description

@derfloh

Category

Other

Hardware

Heltec Wireless Paper

Is this bug report about any UI component firmware like InkHUD or Meshtatic UI (MUI)?

  • Meshtastic UI aka MUI colorTFT
  • InkHUD ePaper
  • OLED slide UI on any display

Firmware Version

2.7.10

Description

A while ago I've bought a Heltec Wireless Paper and it rebooted/crashed way too often (reliably every 3-5 Minutes, but sometimes it worked for hours) (this was with 2.7.5 IIRC). I recently updated to 2.7.9 to see if the situation has improved, but it didn't. I did some testing/debugging with 2.7.10 but it also showed the same symptoms.

Crash report looks like:

DEBUG | 11:23:19 310 [Router] Module 'RecentsListApplet' wantsPacket=1
DEBUG | 11:23:19 310 [Router] Module 'RecentsListApplet' considered
DEBUG | 11:23:19 310 [Renderer] FULL-update debt:0.933333
DEBUG | 11:23:19 310 [Renderer] UNSPECIFIED: using FAST
INFO  | 11:23:19 310 [Renderer] Drawing card for node 0xb50443e0
INFO  | 11:23:19 310 [Renderer]  nodeDB Size=200
INFO  | 11:23:19 310 [Renderer]  Printing hops away
INFO  | 11:23:19 310 [Renderer]  Node has 3 hops away
INFO  | 11:23:19 310 [Renderer]  Node Field HasHopsAway=1
INFO  | 11:23:19 310 [Renderer]  Node 3
INFO  | 11:23:19 310 [Renderer]  Printing hops away value 3
INFO  | 11:23:19 310 [Renderer]  Printed hops away
INFO  | 11:23:19 310 [Renderer]  Printed hatch
INFO  | 11:23:19 310 [Renderer] Drawing card for node 0x6f2531d2
INFO  | 11:23:19 310 [Renderer]  nodeDB Size=200
INFO  | 11:23:19 310 [Renderer]  Printing hops away
INFO  | 11:23:19 310 [Renderer]  Node has 1 hops away
INFO  | 11:23:19 310 [Renderer]  Node Field HasHopsAway=1
INFO  | 11:23:19 310 [Renderer]  Node 1
INFO  | 11:23:19 310 [Renderer]  Printing hops away value 1
INFO  | 11:23:19 311 [Renderer]  Printed hops away
INFO  | 11:23:19 311 [Renderer]  Printed hatch
INFO  | 11:23:19 311 [Renderer] Drawing card for node 0xe0d39c28
INFO  | 11:23:19 311 [Renderer]  nodeDB Size=200
INFO  | 11:23:19 311 [Renderer]  Printing hops away
INFO  | 11:23:19 311 [Renderer]  Node has 5 hops away
INFO  | 11:23:19 311 [Renderer]  Node Field HasHopsAway=1
INFO  | 11:23:19 311 [Renderer]  Node 5
INFO  | 11:23:19 311 [Renderer]  Printing hops away value 5
INFO  | 11:23:19 311 [Renderer]  Printed hops away
INFO  | 11:23:19 311 [Renderer]  Printed hatch
INFO  | 11:23:19 311 [Renderer] Drawing card for node 0xbb38eef9
INFO  | 11:23:19 311 [Renderer]  nodeDB Size=200
INFO  | 11:23:19 311 [Renderer]  Printing hops away
INFO  | 11:23:19 311 [Renderer]  Node has 4 hops away
INFO  | 11:23:19 311 [Renderer]  Node Field HasHopsAway=1
INFO  | 11:23:19 311 [Renderer]  Node 4
INFO  | 11:23:19 311 [Renderer]  Printing hops away value 4
INFO  | 11:23:19 311 [Renderer]  Printed hops away
INFO  | 11:23:19 311 [Renderer]  Printed hatch
INFO  | 11:23:19 311 [Renderer] Drawing card for node 0x6d48eb21
INFO  | 11:23:19 311 [Renderer]  nodeDB Size=200
INFO  | 11:23:19 311 [Renderer]  Printed hatch
INFO  | 11:23:19 311 [Renderer] Drawing card for node 0x8e2e4c9c
INFO  | 11:23:19 311 [Renderer]  nodeDB Size=200
INFO  | 11:23:19 311 [Renderer]  Printing hops away
INFO  | 11:23:19 311 [Renderer]  Node has 5 hops away
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x4207488d  PS      : 0x00060030  A0      : 0x82071173  A1      : 0x3fcebe20  
  #0  0x4207488d in NicheGraphics::InkHUD::NodeListApplet::onRender() at ??:?

A2      : 0x3fcf448c  A3      : 0x3c161804  A4      : 0x00000000  A5      : 0x3fcd5f4c  
A6      : 0x00000a84  A7      : 0x00000a84  A8      : 0x82074888  A9      : 0x3fcebda0  
A10     : 0x3fcec33c  A11     : 0x3c161804  A12     : 0x00000000  A13     : 0x3fcd5c60  
A14     : 0x3fcebdb0  A15     : 0x00000001  SAR     : 0x00000017  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x000000ba  LBEG    : 0x400554b9  LEND    : 0x400554dd  LCOUNT  : 0x8207f5a0  


Backtrace: 0x4207488a:0x3fcebe20 0x42071170:0x3fcebf70 0x42068b99:0x3fcebf90 0x42068f01:0x3fcebfe0 0x4207b8ea:0x3fcec000 0x4206358d:0x3fcec020 0x42016541:0x3fcec060
  #0  0x4207488a in NicheGraphics::InkHUD::NodeListApplet::onRender() at ??:?
  #1  0x42071170 in NicheGraphics::InkHUD::Applet::render() at ??:?
  #2  0x42068b99 in NicheGraphics::InkHUD::Renderer::render(bool) at :?
  #3  0x42068f01 in NicheGraphics::InkHUD::Renderer::runOnce() at :?
  #4  0x4207b8ea in concurrency::OSThread::run() at ??:?
  #5  0x4206358d in loop() at ??:?
  #6  0x42016541 in loopTask(void*) at :?

Note: This log already contains some "LOG_INFO" debugging that I've added.

So I was able to track it down to the following piece of code in /src/graphics/niche/InkHUD/Applets/Bases/NodeList
/NodeListApplet.cpp

        // Otherwise, print "hops away" info, if available
        else if (hopsAway != CardInfo::HOPS_UNKNOWN) {
            std::string hopString = to_string(node->hops_away);
            hopString += " Hop";
            if (node->hops_away != 1)
                hopString += "s"; // Append s for "Hops", rather than "Hop"

            printAt(width() - 1, lineAY, hopString, RIGHT, MIDDLE);
        }

It crashes when to_string() (or a LOG_INFO, or whatever else) tries to access node->hops_away.

I'm wondering why it crashes there, since the other fields of node could be accessed (like node->user.long_name ). My NodeDB is full with 200 entries, so I'm wondering if this could be some problem with Garbage Collection or some other multi-threaded issues.. but my knowledge with the codebase is too limited for this. (On the other hand, I also had reboots when my NodeDB was wiped.. so this might be a red hering)

So, not fixing the issue - only the symptoms:
In the piece of code above, we already have the hops information in hopsAway, we don't need to access node to get that (right?):

       else if (hopsAway != CardInfo::HOPS_UNKNOWN) {
            std::string hopString = to_string(hopsAway);
            hopString += " Hop";
            if (hopsAway != 1)
                hopString += "s"; // Append s for "Hops", rather than "Hop"

            printAt(width() - 1, lineAY, hopString, RIGHT, MIDDLE);
        }

I've been running the firmware with this modification now since a while and didn't have crashes (yet)...

I'm still reporting this, since somebody might know what the actual root cause of this could be...

Relevant log output

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions