Variablen werden verfälscht !?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Hi,

Ich benutze in meinem Programm threads und meine variablen werden manchmal so komisch überschrieben. Ich bekomme dann vom server 2 sachen ( für jeden thread ).
Zum Beispiel AAAAAA und BBBBBB. Dann, parse ich diese Eingaben und dann bekomme ich den Error, dass der Parser nicht weiß was er mit AABBA machen soll.
Es sind auch weniger Buchstaben, als bei den Sachen die der Server gesendet hat. Warum kann das passieren? Ich habe auch locks eingebaut, aber ich weiß nicht warum immer dieser Fehler kommt.
Ein Fehler vom Server ist es bestimmt nicht. Das habe ich schon überprüft.
Hat jemand ideen woran das liegen kann
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Code?
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

CM hat geschrieben:Code?
Ich stell hier nicht den ganzen Code rein, weil der einfach viel zu lang ist ( 4000 Zeilen ) aber ich versuche das mal nachzustellen... Poste ich dann
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Hier:

der Server http://paste.pocoo.org/show/203321/
der Client http://paste.pocoo.org/show/203323/

Kann sowas überhaupt passieren oder liegt das vielleicht an meinem Programm? Vielleicht initialisieren die thread 2 variablen and der gleichen adresse, und dann schreiben die da Code rein, oder sowas wie ein bufferoverflow, vielleicht rede ich aber auch einfach nur schwachsinn... :wink: :roll:
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wie kommst du darauf dass .send() auf ein socket atomar ist?
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

DasIch hat geschrieben:Wie kommst du darauf dass .send() auf ein socket atomar ist?
Was heißt denn atomar? sry, ich habe gerade nur atom gefunden: http://de.wikipedia.org/wiki/Atomar
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Heißt das ich soll auch vor und nach der send funktion vom server einen lock einbauen?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@INFACT Der Artikel hat einen Abschnitt Informatik der nebenbei auch noch den Artikel atomare Operation verlinkt, der den Begriff erklärt.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Ich habe jetzt das da eingebaut, aber es funktioniert trotzdem nicht:

Code: Alles auswählen

self.socketLock.acquire()
                conn.send(ret)
                self.socketLock.release()
Hab ich das falsch verstanden oder warum funktioniert das nicht?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
fabi1511
User
Beiträge: 23
Registriert: Donnerstag 25. Juni 2009, 18:59

ich kenne mich mit den internen vorgängen des socket moduls zwar nicht aus, aber in der Dokumentation steht man sollte am besten eine zweierpotenz für den bufsize parameter nehmen, vieleicht probierst du mal eine bufsize von 8192 (2^13) was andres fällt mi auch nicht ein...
Antworten