<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[sporadische &amp;quot;Access violation&amp;quot;&#x27;s]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:<br />
Ich debugge eine Anwendung, welche unter Visual C++ 6.0 erstellt<br />
worden ist. Sie hat einen Extra-Thread, welcher in einer<br />
Endlosschleife der Com-Port abfrägt und bei Empfang von Daten eine<br />
Nachricht verschickt.</p>
<p>Auf dem Computer, auf dem das Projekt erstellt worden ist, ist alles<br />
in Ordnung - Das Programm läuft einwandfrei (PIII 900Mhz ca., Win<br />
2000). Geht man jedoch mit einer kompilierten Version (egal ob<br />
&quot;Release&quot; oder &quot;Debug&quot;) auf schnellere Rechner (ebenfalls Win 2000),<br />
treten sporadisch &quot;Access Violation&quot;s auf. Das selbe passiert auf<br />
einem alten, langsamen NT4.0 Rechner, auf welchem Visual C++<br />
installiert ist, dort habe ich nun schon einige Debug Versuche<br />
angestellt. Hier ist das ganze sogar so instabil, daß das Programm<br />
direkt nach dem Start abstürzt.</p>
<p>Bei einem Absturz springt der Debugger zu ungewöhnlichen Stellen -<br />
etwa in die Datei \MFC\RC\APPCORE.CPP (Funktion AssertValid()),<br />
...\THRDCORE.CPP (Funktion OnIdle()), oder er springt in den<br />
Disassembler bei Adresse 0, d.h. es wird &quot;00000000 ???&quot; angezeigt.<br />
Will sagen: Es ist mir nicht möglich, rauszufinden an welcher Stelle<br />
in dem von mir zu debuggenden Programm der Fehler liegt.</p>
<p>&quot;Eingelesen&quot; vom Com-Port wird mit:<br />
ReadFile(g_FMM.po_Com-&gt;mh_ComPort, lpBuf,iReadAtOnceQuantity, &amp;dwRead,<br />
&amp;osReader)<br />
Das geschieht wie gesagt in einem Thread, d.h. aus einer<br />
Endlosschleife heraus aus welcher auch noch mit PostMessage<br />
Nachrichten verschickt werden, falls neue Daten vorhanden sind.<br />
Hierfür wird Speicher reserviert, und dann an anderer Stelle wieder<br />
freigegeben.</p>
<p>Da das ganze wie gesagt Ereignisgesteuert ist und nicht sequentiell<br />
abläuft, kann ich nicht einfach durch den Code steppen und schauen, wo<br />
es auftritt. Im Gegenteil, wenn ich z.B. durch diesen Thread steppe,<br />
tritt der Fehler nicht auf.</p>
<p>In der Richtung hab ich noch ein wenig geforscht: Irgendwo in der<br />
Schleife gibt es ein switch, in welchem Thread-spezifische Sachen<br />
bearbeitet werden, z.B. Thread beenden etc.<br />
Der Wert der Variablen, die in diesem switch verarbeitet wird, wird<br />
von WaitForMultipleObjects(...) zugewiesen.<br />
Also:<br />
---<br />
dwRes = WaitForMultipleObjects(...)</p>
<p>switch (dwRes) {<br />
case ...:<br />
break;<br />
}<br />
---<br />
=&gt; Wenn ich diesen Aufruf + das Switch auskommentiere, stürzt die<br />
Sache subjektiv seltener ab, zumindest dauert es länger! Ob es nun in der Tat an diesem Aufruf liegt oder an was anderem, weiß ich nicht. (Wie gesagt, abstürzen tut das Programm immer sporadisch an versch. Stellen)<br />
Benutzen kann man das Programm dann natürlich nicht, da ja keine Nachrichtenbehandlung mehr erfolgt...</p>
<p>Hier die Variablen die ich an WaitForMultipleObjects übergebe:</p>
<p>ciQuantityOfReceiveEvents (3)<br />
hArray (Eventliste; hat 3 Elemente)<br />
false<br />
ciReadTime (50)</p>
<p>---</p>
<p>Falls irgendjemand auch nur den Hauch einer Idee hat, woran es liegen<br />
könnte: Bitte sagt es mir! Mir gehen so langsam die Ideen aus, wo ich<br />
noch suchen könnte, sehr erbaulich ist diese Arbeit auch nicht...</p>
<p>Gruß und schonmal Danke,</p>
<p>Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/71262/sporadische-quot-access-violation-quot-s</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 13:45:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/71262.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Apr 2004 12:28:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sporadische &amp;quot;Access violation&amp;quot;&#x27;s on Fri, 16 Apr 2004 12:28:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:<br />
Ich debugge eine Anwendung, welche unter Visual C++ 6.0 erstellt<br />
worden ist. Sie hat einen Extra-Thread, welcher in einer<br />
Endlosschleife der Com-Port abfrägt und bei Empfang von Daten eine<br />
Nachricht verschickt.</p>
<p>Auf dem Computer, auf dem das Projekt erstellt worden ist, ist alles<br />
in Ordnung - Das Programm läuft einwandfrei (PIII 900Mhz ca., Win<br />
2000). Geht man jedoch mit einer kompilierten Version (egal ob<br />
&quot;Release&quot; oder &quot;Debug&quot;) auf schnellere Rechner (ebenfalls Win 2000),<br />
treten sporadisch &quot;Access Violation&quot;s auf. Das selbe passiert auf<br />
einem alten, langsamen NT4.0 Rechner, auf welchem Visual C++<br />
installiert ist, dort habe ich nun schon einige Debug Versuche<br />
angestellt. Hier ist das ganze sogar so instabil, daß das Programm<br />
direkt nach dem Start abstürzt.</p>
<p>Bei einem Absturz springt der Debugger zu ungewöhnlichen Stellen -<br />
etwa in die Datei \MFC\RC\APPCORE.CPP (Funktion AssertValid()),<br />
...\THRDCORE.CPP (Funktion OnIdle()), oder er springt in den<br />
Disassembler bei Adresse 0, d.h. es wird &quot;00000000 ???&quot; angezeigt.<br />
Will sagen: Es ist mir nicht möglich, rauszufinden an welcher Stelle<br />
in dem von mir zu debuggenden Programm der Fehler liegt.</p>
<p>&quot;Eingelesen&quot; vom Com-Port wird mit:<br />
ReadFile(g_FMM.po_Com-&gt;mh_ComPort, lpBuf,iReadAtOnceQuantity, &amp;dwRead,<br />
&amp;osReader)<br />
Das geschieht wie gesagt in einem Thread, d.h. aus einer<br />
Endlosschleife heraus aus welcher auch noch mit PostMessage<br />
Nachrichten verschickt werden, falls neue Daten vorhanden sind.<br />
Hierfür wird Speicher reserviert, und dann an anderer Stelle wieder<br />
freigegeben.</p>
<p>Da das ganze wie gesagt Ereignisgesteuert ist und nicht sequentiell<br />
abläuft, kann ich nicht einfach durch den Code steppen und schauen, wo<br />
es auftritt. Im Gegenteil, wenn ich z.B. durch diesen Thread steppe,<br />
tritt der Fehler nicht auf.</p>
<p>In der Richtung hab ich noch ein wenig geforscht: Irgendwo in der<br />
Schleife gibt es ein switch, in welchem Thread-spezifische Sachen<br />
bearbeitet werden, z.B. Thread beenden etc.<br />
Der Wert der Variablen, die in diesem switch verarbeitet wird, wird<br />
von WaitForMultipleObjects(...) zugewiesen.<br />
Also:<br />
---<br />
dwRes = WaitForMultipleObjects(...)</p>
<p>switch (dwRes) {<br />
case ...:<br />
break;<br />
}<br />
---<br />
=&gt; Wenn ich diesen Aufruf + das Switch auskommentiere, stürzt die<br />
Sache subjektiv seltener ab, zumindest dauert es länger! Ob es nun in der Tat an diesem Aufruf liegt oder an was anderem, weiß ich nicht. (Wie gesagt, abstürzen tut das Programm immer sporadisch an versch. Stellen)<br />
Benutzen kann man das Programm dann natürlich nicht, da ja keine Nachrichtenbehandlung mehr erfolgt...</p>
<p>Hier die Variablen die ich an WaitForMultipleObjects übergebe:</p>
<p>ciQuantityOfReceiveEvents (3)<br />
hArray (Eventliste; hat 3 Elemente)<br />
false<br />
ciReadTime (50)</p>
<p>---</p>
<p>Falls irgendjemand auch nur den Hauch einer Idee hat, woran es liegen<br />
könnte: Bitte sagt es mir! Mir gehen so langsam die Ideen aus, wo ich<br />
noch suchen könnte, sehr erbaulich ist diese Arbeit auch nicht...</p>
<p>Gruß und schonmal Danke,</p>
<p>Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502658</guid><dc:creator><![CDATA[C. Fuchs]]></dc:creator><pubDate>Fri, 16 Apr 2004 12:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to sporadische &amp;quot;Access violation&amp;quot;&#x27;s on Fri, 16 Apr 2004 12:46:04 GMT]]></title><description><![CDATA[<p>Eine Anmerkung, wenn ich dieses &quot;WaitForMultipleObjects&quot;-Ding auskommentiere, stürzt die Sache überhaupt nicht mehr ab. Tut mir leid, ich sitz jetzt schon ne Weile dran und bin so langsam mit den Nerven fertig...</p>
<p>Gruß,</p>
<p>Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/502675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/502675</guid><dc:creator><![CDATA[C. Fuchs]]></dc:creator><pubDate>Fri, 16 Apr 2004 12:46:04 GMT</pubDate></item></channel></rss>