AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Division durch 0 -> NAN

Ein Thema von Gruber_Hans_12345 · begonnen am 28. Mai 2010 · letzter Beitrag vom 1. Jun 2010
Antwort Antwort
Seite 2 von 2     12   
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Division durch 0 -> NAN

  Alt 28. Mai 2010, 17:38
hmmmmmmm

also, wenn ich SetExceptionMask(GetExceptionMask - [exZeroDivide]); direkt VOR meiner division stelle, dann passt es
aber schon beim nächsten aufruf ist es schon wieder umgestellt.

Wie finde ich nun heraus welches programm oder sonstige mir das ständig umstellt?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

Re: Division durch 0 -> NAN

  Alt 28. Mai 2010, 17:54
Wird diese Maske nicht eigentlich nur für jeden Prozess/Thread privat gesetzt?
Wenn, dann dürften doch Femdprogramme daran nichts ändern können. (ok, abgesehn von irgendwelchen Hooks, eingeschmuggelten DLLs usw.)

Such doch mal in deinem Projekt, ob irgendwo etwas derartiges gesetzt wird?

Strg+Shift+F
Suchwort= "(SetExceptionMask|Set8087CW|FLDCW)"
RegEx aktiviert
im Projektverzeichnis

Eventuell auch mal einen Haltepunkt auf die beiden Prozeduren SetExceptionMask und Set8087CW, mit Debug-DCUs,
wobei natürlich direkte ASM-Aufrufe so nicht entdeckt werden.


Du könntest auch "exZeroDivide in GetExceptionMask" in die überwachten Variablen aufnehmen und wärend des Debuggens immer mal einen Blick drauf werfen.
$2B or not $2B
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#13

Re: Division durch 0 -> NAN

  Alt 28. Mai 2010, 20:33
hmmmm, das komische ist, das die fertige compilierte exe auf dem anderen rechner ja diese div/0 exceptions aufruft ... bzw timmt nicht ganz, es sind nun ja "unghültige gleitkommaoperation" exceptions ....
werde am monetag das ganze noch ein mal testen, auch den rechner mal neu starten, bzw BDS mal neu starten ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#14

Re: Division durch 0 -> NAN

  Alt 28. Mai 2010, 20:41
a) mal alle kompilierten Dateien löschen und b) mach das doch mal in einem leeren Projekt. Dann zeigt sich, ob es am Rechner hängt, oder an dem Programm direkt.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#15

Re: Division durch 0 -> NAN

  Alt 31. Mai 2010, 09:26
soooooo ....

habe mal einiges ausprobiert
Neues Projekt -> da macht ers anscheinend nicht.

Im aktuellen projekt, habe ich mal Breakpoints auf die Funktion gesetzt (Set8087CW)
und mir die werte angeschaut
ich alsse mir die 3 werte ausgeben beim breakpoint (Get8087CW, NewCW, Default8087CW)
wenn ich den Wert $137B setze, dann ist
Delphi-Quellcode:
NewCB = $137B
Default8087CW = $137F
Get8087CW = $137F
kurz danach ist es immer noch so
aber dann so eine sekunde später
ist es dann

Delphi-Quellcode:
NewCB = $137F
Default8087CW = $1378
Get8087CW = $137F
dass heisst für mich, das der Wert ausserhalb von Delphi geändert worden is, bzw per ASM, da es nur so geht, das der Default8087CW nichts davon mitbekommt ...

wie finde ich das nun raus?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#16

Re: Division durch 0 -> NAN

  Alt 31. Mai 2010, 17:50
Zitat von Gruber_Hans_12345:
habe mal einiges ausprobiert
Neues Projekt -> da macht ers anscheinend nicht.
[...]
dass heisst für mich, das der Wert ausserhalb von Delphi geändert worden is, bzw per ASM, da es nur so geht, das der Default8087CW nichts davon mitbekommt ...
So, am Rechner liegts also nicht. Auch nicht an bestimmten Treibern o.ä. denn sonst müsste der Fehler ja reproduzierbar sein. Meiner Meinung nach müsste irgendwas in dem Programm dafür sorgen, dass

Zitat von Gruber_Hans_12345:
wie finde ich das nun raus?
Hast du in deinem Programm irgendwelchen hochtrabenden Grafik-Schnickschnack? - Embarcadero schlägt nämlich vor, die FPU-Exceptions bei der Verwendung von OpenGL zu deaktivieren. Ansonsten könnte das auch irgendeine Komponente verursachen. Was allerdings fraglich ist, ist weiterhin, warum der Wert immer wieder auf seinen alten Wert zurückgesetzt wird.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

Re: Division durch 0 -> NAN

  Alt 31. Mai 2010, 18:04
Ob es am Programm oder am System liegt, kann man ja relativ leicht rausfinden.
> auf anderen PCs, mit anderer Hardware und eventuell anderem OS mal ausprobieren
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#18

Re: Division durch 0 -> NAN

  Alt 31. Mai 2010, 18:18
Ich finde, es ist schon bestätigt, dass es am Programm liegt. Einerseits kommt ja bei anderen eine Exception (siehe #1) und hier kommt mit einem anderen Programm auch eine Exception. Dies lässt also nur noch den Schluss zu, dass es am Programm liegen muss. Oder besser gesagt an der Programm-Rechner-Kombination. Oder ist das nur eine neue Version, die spinnt?

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#19

Re: Division durch 0 -> NAN

  Alt 31. Mai 2010, 18:35
Zitat:
Ich finde, es ist schon bestätigt, dass es am Programm liegt.
Bestätigt ist nichts.

Es kann ja sein, daß hier im Programm was verwendet wird, wodurch etwas externes so reagiert.

z.B. könnte ein DLL verwendet werden, welche wiederrum was anderes läd/auslöst, welches "nur" auf diesem PC etwas "anders" reagiert.
$2B or not $2B
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#20

Re: Division durch 0 -> NAN

  Alt 1. Jun 2010, 13:12
Also, Entwicklungsrechner neu starten brachte keine Besserung.

Jetzt habe ich das Phänomen auch auf meinem zweiten Rechner (Kann auch sein, das der es vorher auch schon hatte und nicht auffiel)

Ich habe in die Titelleiste eingebaut, das er mir immer den Status des CW anzeigt, per Timer - alle 100ms
und einen Button mit dem ich das CW rücksetzen kann.

Dann sieht man schön, rückgesetzt auf den richtigen Wert. Dann zwischen ein paar ms und 2 sekunden, steht wieder der falsche Wert im CW drinnen ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz