Auf der Suche nach dem Fehler sehe ich meinen Verdacht bestätigt:
Es handelt sich um einen Service. Ich versuche daher den Fehler mit MessageBoxes einzugrenzen, doch verschwindet oder verändert sich der Fehler wenn ich mit meinen Nachrichten näher komme!!!
Beispielsweise habe ich bei Socketoperationen öfter den Fehler "Socket operation on nonsocket." bekommen. Nachdem ich mir Infos über entsprechende Sockethandles hab ausgeben lassen hats funktioniert:
Delphi-Quellcode:
...
//So gehts:
activeComSockets := ComSockets;
MessageBox(0, PChar('Debug 4.5: '+ IntToStr(activeComSockets.fd_count)), 'JIS', MB_SERVICE_NOTIFICATION);
timeout.tv_usec := 100;
if select(0, @activeComSockets, nil, nil, @timeout) = SOCKET_ERROR then
HandleError
...
Delphi-Quellcode:
...
//So nicht:
activeComSockets := ComSockets;
timeout.tv_usec := 100;
if select(0, @activeComSockets, nil, nil, @timeout) = SOCKET_ERROR then
HandleError
...
Lustigerweise handelt es sich bei allen Variablen im Codeausschnitt um lokale Variablen der procedure ListenThread. Das ganze tritt an mehreren Stellen in dieser Form auf.
Frage: Wieso so komische Fehler und wie bekomme ich den Thread vernünftig ans laufen?