Jump to content

Array out of bounds in bricklib / spi_stack_slave_is_selected(void)


Recommended Posts

Hallo Admins,

 

ich habe leider immernoch das Problem, dass mein Stack ab und zu hängt (d.h. für mehrere Sekunden nicht reagiert, Client bekommt Timeout), dann wieder reagiert (auf einmal werden sogar die Servo-Befehle nachgeholt obwohl der Client schon disconnected ist und die Servos werden "hektisch") und sehr sporadisch bootet der Stack dann auch von alleine neu ...

 

Darum habe ich Teile des Codes mit "cppcheck" durchforstet.

CppCheck wird in der Bricklib fündig:

 

[com/spi/spi_stack/spi_stack_slave.c:166]: (error) Array 'spi_slave_pins[2]' accessed at index 3, which is out of bounds

 

Die Meldung sieht korrekt aus: das Array hat nur 2 Elemente, der Index ist aber 3 => 2 Elemente übers Ziel hinaus.

Ich habe nur Master-Brick, Servo-Brick, Ambilight und Quad-Relay damit geprüft und das war die einzige Meldung. Die Funktion wird in diesen Modulen jedoch nicht aufgerufen => vermutlich kein Problem.

 

Nur als Info, vielleicht schaut Ihr Euch das mal an.

 

Ich versuche weiter, mein Problem mit einem Testfall zu reproduzieren  :-[

Link zu diesem Kommentar
Share on other sites

Die ganze Kommunikation findet nur über die WIFI-Extension statt, das können ca. 50-100 Messages / Sekunde sein. Und der Fehler ist leider sehr sporadisch: ich hab schon mal nach nur 300 Servo-Commands plus weniger Bricklet-Status-Abfragen den Stack zum Absturz gebracht (reboot), dann bekomme ich auch wieder weit über 15.000 Commands durch, ohne Probleme ... Der Effekt ist immernoch ähnlich wie der aus diesem Thread http://www.tinkerunity.org/forum/index.php/topic,1339.msg8469.html#msg8469.

 

Eine andere evtl. nützliche Meldung ist noch das hier:

[drivers/usb/USBDDriver.c:550]: (warning) memset() called to fill 0 bytes of 'pInterfaces'.

 

Das dürfte aber auch nichts mit meinem Problem zu tun haben.

Ich habe das Gefühlt, dass im WIFI ein noch Overflow bei hoher Last passiert (wegen den Stack-Reboot). Ich werde den Test-Stack über USB anschließen und dann länger so testen. Wenn dann kein Fehler mehr auftritt, könnte das noch mehr in Richtung WIFI deuten. Viel helfen wird diese Erkenntnis für die Fehlerbehebung leider nicht ...

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...