| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: itos Absturz bei zu großen Zahlen (1670 mal gelesen)
|
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012 Creo Parametric 3.0 M120 PDM Essentials 10.1 M040
|
erstellt am: 01. Jul. 2015 10:42 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe gerade einen etwas kritischeren Bug in Creo ausgemacht. Ich denke, dass sich dieser Fehler ggf. auch in älteren Versionen wieder findet. Bei uns im System habe wir in Startteilen als Standard ein Material hinterlegt, welches eine sehr hohe Dichte hat um im späteren Verlauf Fehler bei fehlender Materialzuweisung schneller zu finden. Nun gibt es in den Beziehungen eine Formel, die mir aus der gemeldeten Masse einen Parameter für unsere Zeichnungen fütter. Ich denke, dass das ja häufiger so verwendet wird. Wenn nun die Masse (oder irgend ein anderer beliebiger Wert) größer oder gleich 2^31 ist und man diesen mit itos(2^31) auswerten möchte, dann geht Creo sofort in die Knie und stürzt ab. Ich weiß nicht, ob das ggf. auch im laufenden Betrieb vorkommen kann ohne das man die explizite Auswertung in der Beziehung vornimmt. ------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holligo Mitglied MB-Konstr.
Beiträge: 652 Registriert: 25.04.2003
|
erstellt am: 19. Aug. 2015 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für NicoFTB
|
Wyndorps Ehrenmitglied V.I.P. h.c. Ingenieur
Beiträge: 4563 Registriert: 21.07.2005 Creo 8.0.1.0 Genius Tools 8.0 Windchill 12.0.2.0
|
erstellt am: 19. Aug. 2015 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für NicoFTB
Zur ersten Frage: Das ist kein Fehler der itos-Funktion, sondern eine Begrenzung des Zahlenformats von Creo. Die itos-Funktion kann nur auf ganze Zahlen (Integer) angewendet werden. Die Ganzen Zahlen sind in Creo offensichtlich maximal 10-stellig definiert. Wir haben zusätzlich zur relativ hohen Dichte die Werkstoffbezeichnung "kein Material/no material" als Standard vordefiniert. Das wirkt sogar noch besser als eine hohe Dichte.
------------------ ---------------- "Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist." (Stanislaw Jerzy Lec) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kuno2 Mitglied Senior Tüftler
Beiträge: 536 Registriert: 06.07.2004 win10 64 SUT 2018 creo3 creo 5.0.3.0
|
erstellt am: 19. Aug. 2015 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für NicoFTB
Hallo Nico, bei mir wertet Creo2 M070 bis 2^31-1+0.49 korrekt aus (rundet und wandelt um in Zeichenkette), darüber gibt's nur kein Ergebnis, jedoch auch keinen Absturz. Korrektur: oberhalb 2^31-0,51 gibt nicht kein Ergebnis, sondern eine leere Zeichenkette. ------------------ Euer Kuno2 [Diese Nachricht wurde von kuno2 am 19. Aug. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holligo Mitglied MB-Konstr.
Beiträge: 652 Registriert: 25.04.2003
|
erstellt am: 19. Aug. 2015 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für NicoFTB
Das war eindeutig - selbst nachschauen, wenn man weiter folgen will: itos - Konvertiert ganze Zahlen (Integers) in Zeichenfolgen. Hierbei kann int eine Zahl oder ein Ausdruck sein. Nicht ganzzahlige Zahlen werden abgerundet. ------------------ lg holli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012 Creo Parametric 3.0 M120 PDM Essentials 10.1 M040
|
erstellt am: 19. Aug. 2015 15:49 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Wyndorps: Zur ersten Frage: Das ist kein Fehler der itos-Funktion, sondern eine Begrenzung des Zahlenformats von Creo. Die itos-Funktion kann nur auf ganze Zahlen (Integer) angewendet werden. Die Ganzen Zahlen sind in Creo offensichtlich maximal 10-stellig definiert.
Das eine sind die ganzen Zahlen. Das andere ist eine interne Berechnung. Und da gibt es anscheinend einen Buffer overflow bei 64bit. Integer gehen bei 64bit von -2^31 bis 2^31 und haben dann noch bei 2^32 das Vorzeichen stehen. In meinem Fall habe ich eine Formel hinterlegt bei der Masseberechnung die schnell an diese Grenzen kommen kann. Nur wenn man dann eine Auswertung in der Beziehung macht, stürzt das System ab. Zitat: Original erstellt von Wyndorps: Wir haben zusätzlich zur relativ hohen Dichte die Werkstoffbezeichnung "kein Material/no material" als Standard vordefiniert. Das wirkt sogar noch besser als eine hohe Dichte..
Ja, das habe wir zusätzlich auch ------------------ Grüße Nico \o/ Üs - ProE-Beziehungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NicoFTB Mitglied Ingenieur Entwicklung/Konstuktion
Beiträge: 806 Registriert: 08.05.2012
|
erstellt am: 28. Apr. 2016 14:51 <-- editieren / zitieren --> Unities abgeben:
|