AGB  ·  Datenschutz  ·  Impressum  







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

EBitsError Delphi 2006

Ein Thema von mbeilharz · begonnen am 3. Jun 2009 · letzter Beitrag vom 5. Jun 2009
Antwort Antwort
mbeilharz

Registriert seit: 12. Mai 2006
18 Beiträge
 
#1

EBitsError Delphi 2006

  Alt 3. Jun 2009, 16:15
hallo zusammen,

zunächst einmal hoffe ich, dass ich keinen thread, den es zu diesem thema bereits gibt, übersehen habe. falls doch, dann möge mir eine freundlicher forum user den link schicken

das problem:
wir haben ein recht umfangreiches mdi-programm, das über jahre hinweg (seit delphi 3) gewachsen ist. von grund auf neu entwickelt wurde es nicht - wahrscheinlich, wie bei vielen anderen auch.
seit einigen wochen erscheint bei einigen kunden, die meldung "EBitsError" beim beenden eines fensters. nachvollziehen (auch bei diesem kunden an dem gleichen rechner mit exakt den aktionen) lässt es sich nicht oder nur sehr sporadisch.
wir setzen eurekalog ein, das wurde inzwischen aktualisiert, aber selbst eurekalog gibt uns keine vernünftigen code-stellen, an denen wir nach fehlern forschen könnten.
was den ebitserror auslöst, ist klar. nur erklären können wir es uns nicht.
es schein auch verzögert aufzutreten, d.h. das fenster wurde geschlossen, intern laufen einige free's und dann "irgendwann" zeitlich später ... bumm.
es scheint ein ressourcen-problem zu sein, nur kommen wir der sache nicht näher, wie man dies in griff oder in geordnete bahnen bekommen könnte.

ich bin für alle ideen von euch dankbar, wie man diesem phönomen/erscheinung auf den pelz rücken kann.

so long
m.beilharz
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: EBitsError Delphi 2006

  Alt 3. Jun 2009, 19:51
Hallo

Ich würde mal systematisch alle Stellen im Code durchgehen, wo auf ein Array mit booleschen Werten zugegriffen wird.

Zitat von Delphi Online Hilfe:
EBitsError wird aufgerufen, wenn eine Anwendung versucht, auf ein Array mit booleschen Werten zuzugreifen (also auf eine Instanz der Klasse TBits), und dabei einen Indexwert verwendet, der zu groß oder zu klein ist. Dies kann der Fall sein, wenn der Wert des Parameters Index der Eigenschaft Bits eine der folgenden Bedingungen erfüllt:

Er ist kleiner als Null.

Er ist gleich oder größer als der Wert der Eigenschaft Size.
Thomas
  Mit Zitat antworten Zitat
mbeilharz

Registriert seit: 12. Mai 2006
18 Beiträge
 
#3

Re: EBitsError Delphi 2006

  Alt 4. Jun 2009, 09:17
hi toms,

danke für deinen tip, aber das darfste mir glauben, dass haben wir bereits getan. die schwierigkeit dabei ist, dass wir zwar den destructor kennen, in dem es "knallt", aber es nicht nachvollziehen können. bei anderen kunden kommt es überhaupt nicht (auch mit sehr ähnlichen systemen) und bei kunden, die dies ab und an bekommen, dies eben nicht immer auftritt. wir haben logs etabliert, speicherüberwachung und und und ... nix ... in diesem destructor wird nicht mal auf ein array zugegriffen.
wie gesagt, es ist möglich (höchst wahrscheinlich sogar), dass es an einer völlig anderen stelle kracht, denn die meldung erscheint verzögert. wir haben sogar - dank versionskontrolle - die sourcen verglichen usw. es ist dem einfach nicht näher zu kommen.

gruß
michael

Zitat von toms:
Hallo

Ich würde mal systematisch alle Stellen im Code durchgehen, wo auf ein Array mit booleschen Werten zugegriffen wird.

Zitat von Delphi Online Hilfe:
EBitsError wird aufgerufen, wenn eine Anwendung versucht, auf ein Array mit booleschen Werten zuzugreifen (also auf eine Instanz der Klasse TBits), und dabei einen Indexwert verwendet, der zu groß oder zu klein ist. Dies kann der Fall sein, wenn der Wert des Parameters Index der Eigenschaft Bits eine der folgenden Bedingungen erfüllt:

Er ist kleiner als Null.

Er ist gleich oder größer als der Wert der Eigenschaft Size.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: EBitsError Delphi 2006

  Alt 4. Jun 2009, 10:46
Hi Michael,

Zitat von mbeilharz:
danke für deinen tip, aber das darfste mir glauben, dass haben wir bereits getan. die schwierigkeit dabei ist, dass wir zwar den destructor kennen, in dem es "knallt", aber es nicht nachvollziehen können. bei anderen kunden kommt es überhaupt nicht (auch mit sehr ähnlichen systemen) und bei kunden, die dies ab und an bekommen, dies eben nicht immer auftritt. wir haben logs etabliert, speicherüberwachung und und und ... nix ... in diesem destructor wird nicht mal auf ein array zugegriffen.
wie gesagt, es ist möglich (höchst wahrscheinlich sogar), dass es an einer völlig anderen stelle kracht, denn die meldung erscheint verzögert. wir haben sogar - dank versionskontrolle - die sourcen verglichen usw. es ist dem einfach nicht näher zu kommen.
Die EBitsError Exception ist wie bereits aus der Hilfe zitiert vergleichbar einem RangeCheck Error. Es wird also eine Wertgrenze über bzw. unterschritten.

Das ganze wird ausschließlich in der Klasse TBits geraist, die wiederrum Verwedung findet in: Menus, Toolbars, Buttons und verschiedenen Klassen der Datenbankfunktionalität.

Leider kann man solche Fehler nicht pauschal erklären. Es kann an Komponenten und Source liegen, an den Sourcen der RTL/VCL Eurer Delphi Version (welche, Updatestand?) und auch am Zielsystem (Konfiguration, Eigenschaften, Besonderheiten?).

Ihr habt wirklich schon alles durch? z.B. das erwähnte Exception-Tracing oder auch den Remote-Debugger, FastMM im FullDebugMode etc.pp.? Handle Leaks, Code-Audit?

Bisher habe ich noch jeden Bug gefunden, der irgendwo gemeldet oder sichtbar wurde (Assertor bei Kunden a.k.a. BugHunter, weil es immer einen Grund für die Bugs geben muß). Idee: PN?

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
mbeilharz

Registriert seit: 12. Mai 2006
18 Beiträge
 
#5

Re: EBitsError Delphi 2006

  Alt 5. Jun 2009, 09:58
hallo assertor,

mit wirklich schon alles durch, meinte ich natürlich die mittel und werkzeuge, die wir kennen bzw. vor ort beim kunden machen können. eurekalog brachte uns nicht wirklich weiter. wo und wieso tbits diesen fehler raist haben wir in den delphi sourcen nachgeschaut, daraufhin haben wir unseren code durchforstet und perr vss die historien verglichen usw. ... wir sind leider noch nicht weiter gekommen. wir haben profiler eingesetzt, der an den beteiligten sourcen und programm stellen nichts auszusetzen hatte. wir arbeiten mit delphi 2006. den memory manager hatten wir auch schon in verdacht, wir können es uns aber einfach nicht erklären, warum dies so plötzlich auftrat und wieso es nicht vernünftig nach zu vollziehen ist. wir nehmen ja auch an, dass es irgendwo einen fehler im source gibt (hoffentlich!). exception tracing haben wir, daher haben wir ja ungefähr die sourcen, in denen es rums macht. remote-debuger und fastmm kenne ich nicht. muss ich mich mal schlau machen, besten dank dafür

gruß
michael

Zitat von Assertor:
Hi Michael,

Die EBitsError Exception ist wie bereits aus der Hilfe zitiert vergleichbar einem RangeCheck Error. Es wird also eine Wertgrenze über bzw. unterschritten.

Das ganze wird ausschließlich in der Klasse TBits geraist, die wiederrum Verwedung findet in: Menus, Toolbars, Buttons und verschiedenen Klassen der Datenbankfunktionalität.

Leider kann man solche Fehler nicht pauschal erklären. Es kann an Komponenten und Source liegen, an den Sourcen der RTL/VCL Eurer Delphi Version (welche, Updatestand?) und auch am Zielsystem (Konfiguration, Eigenschaften, Besonderheiten?).

Ihr habt wirklich schon alles durch? z.B. das erwähnte Exception-Tracing oder auch den Remote-Debugger, FastMM im FullDebugMode etc.pp.? Handle Leaks, Code-Audit?

Bisher habe ich noch jeden Bug gefunden, der irgendwo gemeldet oder sichtbar wurde (Assertor bei Kunden a.k.a. BugHunter, weil es immer einen Grund für die Bugs geben muß). Idee: PN?

Gruß Assertor
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:45 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