Seite 1 von 2

Crash: Thread + MsgRequester + Threadsafe Executable

Verfasst: 17.04.2008 22:31
von Lukaso
Hallo,

bin gerade über etwas gestolpert, mein aktuelles Großprojekt stürzt bei einem MessageRequester, der in einem Thread gelagert wird (um die Eventabarbeitung nicht zu unterbrechen), nach dem klicken auf "OK", ab.

Hab das ganze mal in Kurzform nachgebaut (eigentlich wollte ich ausschließen das es sich um einen PB-Bug handelt, was allerdings wohl doch der fall ist).

Stürzt allerdings nur bei aktivierter "Threadsafe Executable" Option ab, wenn nicht Threadsafe ist geht es ohne Probleme allerdings hab ich dann das Problem was ich eigentlich mit dem Threadsafe dingens umgehen wollte.

Code: Alles auswählen

Global sTest.s = "TEST"

Procedure ThreadTest()
  MessageRequester(sTest, sTest)
EndProcedure

CreateThread(@ThreadTest(), 0)

Repeat : Delay(100) : ForEver
Probiert selbst ;)
Line: 5 - Illegal instruction. (executing binary data?)
Verwendet: PB4.10 Final

Verfasst: 17.04.2008 22:38
von edel
In diesem Fall sitzt der Bug vorm Bildschirm. Die Procedure muss
einen Parameter besitzen. Schliesslich uebergibst du ja auch einen.

Verfasst: 17.04.2008 22:41
von Lukaso
aua, macht sinn ... ich dödel :?

Verfasst: 17.04.2008 23:48
von AND51
LOL? In PB 4.20 BETA 4 läuft es wider erwarten, warum?

Verfasst: 17.04.2008 23:55
von ts-soft
AND51 hat geschrieben:LOL? In PB 4.20 BETA 4 läuft es wider erwarten, warum?
Das es läuft bedeutet nicht, das es nicht falsch ist. Ist also Schnuppe, das
es läuft, muß ja nicht bei anderen so sein.

Verfasst: 18.04.2008 12:04
von AND51
> Das es läuft bedeutet nicht, das es nicht falsch ist.
Doch! Eine Prozedur, die als Thread ausgeführt werden soll, muss einen Parameter haben, so steht es ja auch in der Hilfe.
Übrigens: Früher lief es "versehentlich" auch mit Strings, was seit 4.xx repariert wurde; dass es jetzt aber auch mit "gar nichts" läuft, finde ich amüsant.

Verfasst: 18.04.2008 12:16
von edel
Hast du ueberhaupt gelesen was Thomas geschrieben hat ?

Verfasst: 18.04.2008 12:20
von AND51
Ich habe es sogar zitiert!
Was ich mit meinem "Doch!" sagen wollte war: Dieser Code dürfte IMHO eigentlich nciht laufen, eben weil die Prozedur keinen Parameter hat. Aber das ist nur meine Meinung, ich habe PB nicht gemacht und kann da auch nicht reingucken, vielleicht hat man das ja auch mit Absicht so gemacht, wer weiß? Ich kann mich nur auf die Hilfe beziehen.

Verfasst: 18.04.2008 12:23
von edel
Man kann nicht pruefen ob die Procedure ein Parameter hat oder nicht.
Das es bei dir nicht in die Hose geht, spielt auch keine Rolle, frueher oder
spaeter wird es das.

Verfasst: 18.04.2008 12:32
von Kiffi
edel hat geschrieben:Man kann nicht pruefen ob die Procedure ein Parameter hat oder nicht.
PB prüft ja normalerweise recht zuverlässig, ob die Anzahl der Parameter
stimmt und gibt ggfs. ein "Incorrect number of parameters." aus

Warum das bei Threads anders ist, entzieht sich allerdings auch meiner Kenntnis.

Grüße ... Kiffi