<?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[hilferuf debugging]]></title><description><![CDATA[<p>also, ich weiss nicht was ich mir hier jetzt erhoffe ggf nen dummen zufall das jemand spontan weiss was hier vorliegen könnte. Bzw irgend nen anhaltspunkt hat.<br />
Ich programmiere seit ca 3 Jahren nun an einen online rollenspiel mit. In letzter Zeit wurden größere änderungen gemacht (inklusive compiler update etc also nicht nur reine Quelltextänderungen) ebenso mussten bestimmte codeteile komplett neu geschrieben werden. Auf alle fälle haben wir nun seit ca 1 Monat gehäuft segfaults an unerklärlichen stellen, erstaunlicherweise aber fast immer an der selben codestelle die an für sich nicht fehlerhaft sein dürfte. Wir haben schon mit diversen debuggern etc versucht den Fehler zu finden, nichts hat bisher wirklich geholfen. Ich greiffe zur Zeit auch nach jeden strohhalm der sich finden lässt. Vielleicht kennt jemand noch gute tools um dem problem etwas auf den grund zu gehen.</p>
<p>hier mal eine typische gdb ausgabe:</p>
<blockquote>
<p>Program received signal SIGSEGV, Segmentation fault.<br />
[Switching to Thread -1222689872 (LWP 15642)]<br />
0x09464710 in ?? ()<br />
(gdb) backtrace<br />
#0 0x09464710 in ?? ()<br />
#1 0x08058422 in boost::detail::sp_counted_base::release (this=0x94a57a0)<br />
at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:145<br />
#2 0x0805845a in ~shared_count (this=0xb71f2dd0) at /usr/include/boost/detail/shared_count.hpp:159<br />
#3 0x080584c2 in ~shared_ptr (this=0xb71f2dcc) at /usr/include/boost/shared_ptr.hpp:106<br />
#4 0x080584d8 in ~CommonStruct (this=0xb71f2dc0) at ./TableStructs.hpp:150<br />
#5 0x080606c2 in CContainer::VolOk (this=0xaa557808, item=<br />
{id = 326, number = 1 '\001', wear = 2 '\002', quality = 571, data = 0}) at CContainer.cpp:852<br />
#6 0x08061445 in CContainer::InsertItem (this=0xaa557808, it=<br />
{id = 326, number = 1 '\001', wear = 2 '\002', quality = 571, data = 0}, merge=false) at CContainer.cpp:109<br />
#7 0x080d8326 in CPlayer::load (this=0xaa480e20) at CPlayer.cpp:1423<br />
#8 0x080e4301 in CPlayer (this=0xaa480e20, newConnection=@0xb71f33bc) at CPlayer.cpp:158<br />
#9 0x08247c22 in CPlayerManager::managingLoop (pmanager=0x15d08440) at CPlayerManager.cpp:109<br />
#10 0xb7fd40bd in start_thread () from /lib/tls/libpthread.so.0<br />
#11 0xb7c389ee in clone () from /lib/tls/libc.so.6</p>
</blockquote>
<p>die funktion VolOk existiert schon seit jahren im ganzen system und hat bisher noch keine probleme gemacht. Neut ist der managing loop welcher gethreaded ist und das einloggen der spieler steuert. Interessant ist auch das das ganze für Stunden läuft ( mit unter bis zu 16 h ) und dann das problem innerhalb kurzer Zeit auch mehrfach auftritt. Also wenn irgendwer in irgend einer form was dazu beitragen kann ich bin für jede noch so verrückte Theorie offen, denn bisher ist es auch noch nicht gelungen den segfault mit absicht aus zu lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193874/hilferuf-debugging</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 08:22:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193874.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Oct 2007 08:51:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to hilferuf debugging on Mon, 01 Oct 2007 08:51:15 GMT]]></title><description><![CDATA[<p>also, ich weiss nicht was ich mir hier jetzt erhoffe ggf nen dummen zufall das jemand spontan weiss was hier vorliegen könnte. Bzw irgend nen anhaltspunkt hat.<br />
Ich programmiere seit ca 3 Jahren nun an einen online rollenspiel mit. In letzter Zeit wurden größere änderungen gemacht (inklusive compiler update etc also nicht nur reine Quelltextänderungen) ebenso mussten bestimmte codeteile komplett neu geschrieben werden. Auf alle fälle haben wir nun seit ca 1 Monat gehäuft segfaults an unerklärlichen stellen, erstaunlicherweise aber fast immer an der selben codestelle die an für sich nicht fehlerhaft sein dürfte. Wir haben schon mit diversen debuggern etc versucht den Fehler zu finden, nichts hat bisher wirklich geholfen. Ich greiffe zur Zeit auch nach jeden strohhalm der sich finden lässt. Vielleicht kennt jemand noch gute tools um dem problem etwas auf den grund zu gehen.</p>
<p>hier mal eine typische gdb ausgabe:</p>
<blockquote>
<p>Program received signal SIGSEGV, Segmentation fault.<br />
[Switching to Thread -1222689872 (LWP 15642)]<br />
0x09464710 in ?? ()<br />
(gdb) backtrace<br />
#0 0x09464710 in ?? ()<br />
#1 0x08058422 in boost::detail::sp_counted_base::release (this=0x94a57a0)<br />
at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:145<br />
#2 0x0805845a in ~shared_count (this=0xb71f2dd0) at /usr/include/boost/detail/shared_count.hpp:159<br />
#3 0x080584c2 in ~shared_ptr (this=0xb71f2dcc) at /usr/include/boost/shared_ptr.hpp:106<br />
#4 0x080584d8 in ~CommonStruct (this=0xb71f2dc0) at ./TableStructs.hpp:150<br />
#5 0x080606c2 in CContainer::VolOk (this=0xaa557808, item=<br />
{id = 326, number = 1 '\001', wear = 2 '\002', quality = 571, data = 0}) at CContainer.cpp:852<br />
#6 0x08061445 in CContainer::InsertItem (this=0xaa557808, it=<br />
{id = 326, number = 1 '\001', wear = 2 '\002', quality = 571, data = 0}, merge=false) at CContainer.cpp:109<br />
#7 0x080d8326 in CPlayer::load (this=0xaa480e20) at CPlayer.cpp:1423<br />
#8 0x080e4301 in CPlayer (this=0xaa480e20, newConnection=@0xb71f33bc) at CPlayer.cpp:158<br />
#9 0x08247c22 in CPlayerManager::managingLoop (pmanager=0x15d08440) at CPlayerManager.cpp:109<br />
#10 0xb7fd40bd in start_thread () from /lib/tls/libpthread.so.0<br />
#11 0xb7c389ee in clone () from /lib/tls/libc.so.6</p>
</blockquote>
<p>die funktion VolOk existiert schon seit jahren im ganzen system und hat bisher noch keine probleme gemacht. Neut ist der managing loop welcher gethreaded ist und das einloggen der spieler steuert. Interessant ist auch das das ganze für Stunden läuft ( mit unter bis zu 16 h ) und dann das problem innerhalb kurzer Zeit auch mehrfach auftritt. Also wenn irgendwer in irgend einer form was dazu beitragen kann ich bin für jede noch so verrückte Theorie offen, denn bisher ist es auch noch nicht gelungen den segfault mit absicht aus zu lösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375761</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Mon, 01 Oct 2007 08:51:15 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Mon, 01 Oct 2007 08:58:10 GMT]]></title><description><![CDATA[<p>Interessant ist vor allem, daß der Fehler in den Destruktor-Aufrufen auftritt (also vermutlich beim Verlassen der VolOK). Ich würde, ohne den Code zu kennen, auf einen zerstörten Heap tippen (vermutlich habt ihr irgendwo über die Grenzen des reservierten Speichers hinausgeschrieben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375770</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 01 Oct 2007 08:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Mon, 01 Oct 2007 09:07:04 GMT]]></title><description><![CDATA[<p>ja an eine heap corruption glauben wir auch, die frage ist woher kommt die *gg*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375773</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Mon, 01 Oct 2007 09:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Mon, 01 Oct 2007 09:15:07 GMT]]></title><description><![CDATA[<p>Vermutlich nicht aus dieser Funktion <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> (ich weiß, das hilft nicht weit)</p>
<p>Ich tippe darauf, daß ihr irgendwo über die Grenzen des zulässigen Speicherbereiches hinausgeschrieben habt (wenn du Speicher per <code>arr=new T[x];</code> anforderst, sind 'arr[0]' bis 'arr[x-1]' erlaubt - 'arr[x]' liegt außerhalb deiner Zuständigkeit (und könnte sogar Steuerdaten des Heap-Managers enthalten).<br />
(vielleicht ist's ja nur ein überflüssiges Zeichen wie in &quot;for(i=0;i&lt;=x;++i)arr[i]=...;&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1375783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1375783</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 01 Oct 2007 09:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Tue, 02 Oct 2007 02:36:29 GMT]]></title><description><![CDATA[<p>hm bisher hab ich noch überhaupt nichts gefunden. Keine Ansätze überhaupt nichts weiter, das ist langsam so nach 1 Monat frustrierend. Das ganze stürzt zwar nicht mehr all zu oft ab aber so ein mal aller 24 h ist auch nicht tragbar für unsere spieler. Selbst sowas wie valgrind und co hat nicht geholfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376273</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Tue, 02 Oct 2007 02:36:29 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Tue, 02 Oct 2007 17:03:08 GMT]]></title><description><![CDATA[<p>Die Tatsache, dass es so selten auftritt, könnte darauf schließen,<br />
dass eine Stelle als Threadsicher angenommen wird, aber es nicht wirklich ist.</p>
<p>Nur ne Vermutung...</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376775</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 02 Oct 2007 17:03:08 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Tue, 02 Oct 2007 17:17:53 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>Die Tatsache, dass es so selten auftritt, könnte darauf schließen,<br />
dass eine Stelle als Threadsicher angenommen wird, aber es nicht wirklich ist.</p>
</blockquote>
<p>Würde ich auch sagen, vor allem, weil der OP meint, der &quot;managing-pool ist jetzt gethreaded&quot; (frei zitiert).</p>
<p>Vielleicht laufe ich auch gerade auf einem hölzernen Weg herum, aber in der Ausgabe steht ja etwas von einer CommonStruct, die anscheinend von einem shared_ptr verwaltet wird. Wird der shared_ptr evtl in mehr als einem Thread benutzt? Da könnte ja beim ref-zählen ein Thread-Sprung stattfinden, der das ein wenig zerschiesst..?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1376784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1376784</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 02 Oct 2007 17:17:53 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Wed, 03 Oct 2007 18:33:56 GMT]]></title><description><![CDATA[<p>also es werden einige shared_ptr in threads verwendet, dort aber nur in thread save vectoren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>ich denke auch das irgendwas nicht ganz 100 % thread save ist aber noch nicht genau wo.</p>
<p>Alles was hier aufgeführt wurde wo der server gerade crasht geschieht sozusagen in der main loop und da achte ich penibel genau das dort kein thread irgendwie reinspielt, die einzige schnittstelle zur main world ist beim login und logout von spielern und die läuft auch wieder über ein thread save vector klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377426</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Wed, 03 Oct 2007 18:33:56 GMT</pubDate></item><item><title><![CDATA[Reply to hilferuf debugging on Wed, 03 Oct 2007 20:22:51 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>CSpille schrieb:</p>
<blockquote>
<p>Die Tatsache, dass es so selten auftritt, könnte darauf schließen,<br />
dass eine Stelle als Threadsicher angenommen wird, aber es nicht wirklich ist.</p>
</blockquote>
<p>Würde ich auch sagen, vor allem, weil der OP meint, der &quot;managing-pool ist jetzt gethreaded&quot; (frei zitiert).</p>
<p>Vielleicht laufe ich auch gerade auf einem hölzernen Weg herum, aber in der Ausgabe steht ja etwas von einer CommonStruct, die anscheinend von einem shared_ptr verwaltet wird. Wird der shared_ptr evtl in mehr als einem Thread benutzt? Da könnte ja beim ref-zählen ein Thread-Sprung stattfinden, der das ein wenig zerschiesst..?</p>
</blockquote>
<p>Ahh ich depp danke für den tipp ich glaube das war eine der heissesten spuren bisher, ich hab nun was gefunden was genau damit zu tun hatte. Danke danke, ich hoffe der kleine workaround hilft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377472</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Wed, 03 Oct 2007 20:22:51 GMT</pubDate></item></channel></rss>