Speicherüberlauf mit subprocess

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Klaus73
User
Beiträge: 1
Registriert: Freitag 5. Januar 2018, 10:37

Freitag 5. Januar 2018, 10:51

Hallo zusammen,ich habe ein Python-Programm für den Raspberry Pi 3 geschrieben. Dieses soll unter anderem die WLAN-Teilnehmer auslesen (Der Raspberry Pi ist mit hostapd als Access-Point konfiguriert!). Dieses Programm ist nach einigen Stunden abgestürtzt. Nun habe ich mich auf die Fehlersuche begeben und dabei herausgefunden, dass es am Aufruf von Popen des subprocess-Moduls liegt. Um den Rest des Codes auszuschließen habe ich nun ein kleines Programm ausgearbeitet, welches nur die Verwendung des subprocess-Moduls enthält (siehe Codes unten).Nun stehe ich vor einem relativ kuriosen Problem: Immer nach ca. 30 Sekunden ist 1% vom RAM mehr belegt als vorher. Woher das genau kommt? Ich bin eherlich gesagt sprachlos und habe keine Idee mehr. Doch jetzt kommt noch etwas viel mehrwürdigers: Verwende ich an Stelle des Kommandos "iw dev wlan0 station dump" "ls -l /etc" habe ich das Problem mit dem RAM nicht. Woher kommt das?Die Probleme treten sowohl mit Python2 als auch mit Python3 auf.Ich bin für jede Hilfe dankbar.
Sirius3
User
Beiträge: 7594
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 5. Januar 2018, 10:59

@Klaus73: „Code unten“ fehlt.
__deets__
User
Beiträge: 2679
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 5. Januar 2018, 11:00

Ich denke nicht, das Python dafür verantwortlich ist. Deine eigene Fehleranalyse zeigt ja, das es am Kommando liegt. Versuch mal statt Python eine simple

while true; do iw....; done

Schleife in der Shell und brich das nach ein paar Sekunden ab. Wenn der Speicher dann auch verbraucht ist, kennen wir den Übeltäter.

Wenn das iw Kommando das Problem ist, dann kann das ggf auch auf einen Fehler im Kernel hinweisen. Da könnte ein Upgrade abhelfen.
Antworten