Seite 2 von 2

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 10:22
von sparrow
mocca hat geschrieben:weil mir im telnet dann angezeigt wird "segmentation fault" ;)
leonidas meint damit: wie kommst du darauf, dass das an dem Script liegt, bzw. an der Art wie in die Datei geschrieben wird.
Denn das _Script_ liefert ja kein segfault zurück.

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 10:26
von mocca
das müsste ich mal im hintergrund mitloggen. gute idee.

ich komme darauf, weil wenn ich die dateien mit cat lese, ich keinen fehler kriege. wenn ich den mediaplayer ohne änderungen öffne, bekomme ich keinen fehler. wenn ich irgendwas mache, was nicht das ändern der dateien aus dem py-code des plugins mache, bekomme ich keinen fehler und kann die dateien immer auslesen.

sehe nicht, woran es sonst liegen soll, wenn es immer geht, ausser wenn ich die dateien von dem plugin ändern lasse.

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 10:36
von sparrow
So, dann machst du einfach folgendes:

Du gehst mit telnet auf die Maschine und dann nacheinander folgendes eingeben:

Code: Alles auswählen

echo 110 > /proc/stb/video/plane/psi_brightness
echo 120 > /proc/stb/video/plane/psi_contrast
cat /proc/stb/video/plane/psi_brightness
cat /proc/stb/video/plane/psi_contrast
python
with open("/proc/stb/video/plane/psi_brightness","w") as f: write("140\n")

with open("/proc/stb/video/plane/psi_contrast","w") as f: write("120\n")

quit()
cat /proc/stb/video/plane/psi_brightness
cat /proc/stb/video/plane/psi_contrast

Und anschließend kopierst du einfach die gesamte Ausgabe des Terminals hier rein.

Danke.


Sparrow

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 10:50
von mocca
da stimmt was nicht.
wenn ich de befehl eingebe wie von dir gepostet, dann bleibt er nach dem python-befehl einfach mit "..." in der zweiten reihe stehen.

hab mal Return gedrückt, dann mal das quit() reingesetzt. hmmm.

EDIT:
moment. da hat bei dir das f vor dem f.write gefehlt.
ich machs nochmal.


so, jetzt:

Code: Alles auswählen

user:~# echo 110 > /proc/stb/video/plane/psi_brightness
user:~# echo 120 > /proc/stb/video/plane/psi_contrast
user:~# cat /proc/stb/video/plane/psi_brightness
110
user:~# cat /proc/stb/video/plane/psi_contrast
120
user:~# python
Python 2.6 (r26:66714, May  6 2010, 00:42:10) 
[GCC 4.1.1 (STMicroelectronics/Linux Base 4.1.1-23)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("/proc/stb/video/plane/psi_brightness","w") as f: f.write("140\n")
... 
>>> with open("/proc/stb/video/plane/psi_contrast","w") as f: f.write("120\n")
... 
>>> quit()
user:~# cat /proc/stb/video/plane/psi_brightness
140
user:~# cat /proc/stb/video/plane/psi_contrast
120
user:~#
das funktioniert. sprich per console gehts schonmal.

soll ich jetzt

Code: Alles auswählen

		with open('/proc/stb/video/plane/psi_brightness', 'w') as brightness:
			brightness.write('140\n')
		brightness.close
		with open('/proc/stb/video/plane/psi_contrast', 'w') as contrast:
			contrast.write('120\n')
		contrast.close
einbauen und schauen?


EDIT2:
habe den code wie gepostet mal eingebaut. ist das ein fehler drin?

sobald ich nämlich das plugin aufrufe kommt wieder dauerspinner und per telnet

Code: Alles auswählen

user:~# cat /proc/stb/video/plane/psi_contrast
Segmentation fault
user:~# cat /proc/stb/video/plane/psi_contrast
Segmentation fault
user:~# 

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 11:03
von sparrow

Code: Alles auswählen

                with open('/proc/stb/video/plane/psi_brightness', 'w') as brightness:
                        brightness.write('140\n')
                with open('/proc/stb/video/plane/psi_contrast', 'w') as contrast:
                        contrast.write('120\n')
Ohne Close, das ist ja das besonder an dem with-Block.
Nach Ablauf wird automatisch die Datei geschlossen, auch falls eine Exception auftritt und die nicht behandelt wird.
Das ersetzt also in diesem Fall den try-except-finally-Blocl.

Gruß
sparrow

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 11:04
von mocca
ok, dann ignorier den zweiten Edit.

Ich probiers nochmal ohne das close.

EDIT:
so, ohen close probiert. Trotzdem kriege ich nach öffnen des Pythonskriptes per Telnet einen Segmentation Fault

Code: Alles auswählen

user:~# cat /proc/stb/video/plane/psi_brightness
Segmentation fault
Ich muss mal schauen. Während des Bootes bekommt man den auch. Ich glaube der Grafiktreiber wird dann aber initialisiert und dann erst ist die Datei zugreifbar. Eventuell müsste man den Wert schreiben und dann den Treiber neu initialisieren.

Aber ich weiss ncht wieso, denn wenn ich den Code via Telnet ausführe, dann wird on-the-fly geändert und ich sehe sofort die Bildanpassungen.

Irgendwas ist da faul, ich befürchte es ist nicht der Python Code.

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 11:46
von sparrow
Offensichtlich geht da etwas anderes schief.

Zum debuggen müsstest du aber noch tiefer ins Detail gehen. Das Script scheint ja noch sehr viel mehr zu machen als nur diese beiden Werte anzupassen.

Kannst du eine beliebige andere Datei mit 'cat' ausgeben lassen wenn das Problem auftritt?

Gruß
sparrow

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 14:11
von mocca
Gute Frage. Werde ich heute abend mal testen!
Manchmal kommt man auf die einfachsten Kurztests nicht selbst :oops:

Gibts ne Möglichkeit dass Python mit ausgibt, was genau es macht? Sozusagen alles logged, was es tut, damit ich das komplette Programm einfach loggen lasse?

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 16:33
von Leonidas
``strace`` ist vermutlich die einfachste Lösung. Aber da kommt dann wirklich megabyteweise Ausgaben.

Re: Segmentation fault bei Schreiben in Dateien

Verfasst: Donnerstag 10. Februar 2011, 23:45
von mocca
ok. also. erster fortschritt.

es funktioniert nun, dass ich die werte beim öffnen des plugins ändern lasse.

problem aber ist, dass er den wert ändert und die datei dann nicht mehr zugreifbar ist.
sprich per telnet bekomm ich den segmentation fault.

problem dabei, wenn ich das plugin verlasse, will ich, dass er die werte wieder auf standard zurücksetzt. geht natürlich nicht, weil die dateien nicht zugreifbar sind.

jemand eine idee?