<?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[Boost::Asio - Asynchroner Server Exception]]></title><description><![CDATA[<p>Hiho,<br />
habe einen asynchronen Server gebastelt. Bei der Instanzierung per ctor crasht es dann. Den Fehler hatte ich noch nie und ich bin auch ziemlich verwundert, weil ich überhaupt nicht weiter weiß. Wie dem auch sei, hier erstmal der Code:</p>
<pre><code class="language-cpp">#ifndef NETWORKASYNCSERVER_HEADER
#define NETWORKASYNCSERVER_HEADER

#include &quot;Includes.h&quot;

namespace Network
{
	class AsyncTCPServer
	{
		private:
			boost::scoped_ptr&lt;boost::asio::ip::tcp::acceptor&gt; m_pAcceptor;
			boost::asio::ip::tcp::endpoint					  m_EndPoint;
			boost::scoped_ptr&lt;boost::thread&gt;				  m_pThread;
			boost::asio::io_service						      m_IOService;
			boost::asio::ip::tcp::socket					  m_Socket;

			void HandleAccept();

		public:
			AsyncTCPServer(const unsigned short Port);
	};
} // namespace Network

//#endif NETWORKASYNCSERVER_HEADER

#include &quot;NetworkAsyncServer.h&quot;

namespace Network
{
	AsyncTCPServer::AsyncTCPServer(const unsigned short Port) :
		m_EndPoint(boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), Port)),
		m_pAcceptor(new boost::asio::ip::tcp::acceptor(m_IOService, m_EndPoint)),
		m_Socket(m_IOService)
	{
		m_pAcceptor-&gt;async_accept(m_Socket, boost::bind(&amp;Network::AsyncTCPServer::HandleAccept, this));

		m_pThread.reset(new boost::thread
		(
			boost::bind(&amp;boost::asio::io_service::run, &amp;m_IOService))
		);

		m_IOService.run();
		std::cout&lt;&lt;&quot;Server: Started&quot;&lt;&lt;std::endl;
	}

	void AsyncTCPServer::HandleAccept() 
	{
		std::cout&lt;&lt;&quot;Server: Client connected&quot;&lt;&lt;std::endl;
	}
} // namespace Network
</code></pre>
<p>Zum Fehler: Ich glaube der Fehler liegt in der Initialisierungsliste. Für mich ist alles korrekt.</p>
<p>Der Fehler: <em>Unhandled exception at 0x77d13592 in Pong.exe: 0xC0000005: Access violation writing location 0xbaadf011.</em><br />
Außerdem wird mir in der <em>win_mutex.hpp</em> folgender Code angezeigt:</p>
<pre><code class="language-cpp">#else
    __try
    {
      ::EnterCriticalSection(&amp;crit_section_);
    }
    __except(GetExceptionCode() == STATUS_INVALID_HANDLE
        || GetExceptionCode() == STATUS_NO_MEMORY
        ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
      if (GetExceptionCode() == STATUS_NO_MEMORY)
        return ERROR_OUTOFMEMORY;
      return ERROR_INVALID_HANDLE;
    }

    return 0;
#endif
</code></pre>
<p>Ich dachte immer das dieses Mutex-Gedöns etwas mit Thread's zu tun hätte, deswegen habe ich den Code mal ohne boost::thread probiert. Ohne Erfolg, der Fehler war derselbe.</p>
<p>Ich hoffe ihr könnt mir irgendwie helfen? Was ist hier putt putt?</p>
<p>Danke im Voraus ihr Süßen!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/263063/boost-asio-asynchroner-server-exception</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 01:28:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/263063.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Mar 2010 13:46:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost::Asio - Asynchroner Server Exception on Mon, 15 Mar 2010 13:46:01 GMT]]></title><description><![CDATA[<p>Hiho,<br />
habe einen asynchronen Server gebastelt. Bei der Instanzierung per ctor crasht es dann. Den Fehler hatte ich noch nie und ich bin auch ziemlich verwundert, weil ich überhaupt nicht weiter weiß. Wie dem auch sei, hier erstmal der Code:</p>
<pre><code class="language-cpp">#ifndef NETWORKASYNCSERVER_HEADER
#define NETWORKASYNCSERVER_HEADER

#include &quot;Includes.h&quot;

namespace Network
{
	class AsyncTCPServer
	{
		private:
			boost::scoped_ptr&lt;boost::asio::ip::tcp::acceptor&gt; m_pAcceptor;
			boost::asio::ip::tcp::endpoint					  m_EndPoint;
			boost::scoped_ptr&lt;boost::thread&gt;				  m_pThread;
			boost::asio::io_service						      m_IOService;
			boost::asio::ip::tcp::socket					  m_Socket;

			void HandleAccept();

		public:
			AsyncTCPServer(const unsigned short Port);
	};
} // namespace Network

//#endif NETWORKASYNCSERVER_HEADER

#include &quot;NetworkAsyncServer.h&quot;

namespace Network
{
	AsyncTCPServer::AsyncTCPServer(const unsigned short Port) :
		m_EndPoint(boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), Port)),
		m_pAcceptor(new boost::asio::ip::tcp::acceptor(m_IOService, m_EndPoint)),
		m_Socket(m_IOService)
	{
		m_pAcceptor-&gt;async_accept(m_Socket, boost::bind(&amp;Network::AsyncTCPServer::HandleAccept, this));

		m_pThread.reset(new boost::thread
		(
			boost::bind(&amp;boost::asio::io_service::run, &amp;m_IOService))
		);

		m_IOService.run();
		std::cout&lt;&lt;&quot;Server: Started&quot;&lt;&lt;std::endl;
	}

	void AsyncTCPServer::HandleAccept() 
	{
		std::cout&lt;&lt;&quot;Server: Client connected&quot;&lt;&lt;std::endl;
	}
} // namespace Network
</code></pre>
<p>Zum Fehler: Ich glaube der Fehler liegt in der Initialisierungsliste. Für mich ist alles korrekt.</p>
<p>Der Fehler: <em>Unhandled exception at 0x77d13592 in Pong.exe: 0xC0000005: Access violation writing location 0xbaadf011.</em><br />
Außerdem wird mir in der <em>win_mutex.hpp</em> folgender Code angezeigt:</p>
<pre><code class="language-cpp">#else
    __try
    {
      ::EnterCriticalSection(&amp;crit_section_);
    }
    __except(GetExceptionCode() == STATUS_INVALID_HANDLE
        || GetExceptionCode() == STATUS_NO_MEMORY
        ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
      if (GetExceptionCode() == STATUS_NO_MEMORY)
        return ERROR_OUTOFMEMORY;
      return ERROR_INVALID_HANDLE;
    }

    return 0;
#endif
</code></pre>
<p>Ich dachte immer das dieses Mutex-Gedöns etwas mit Thread's zu tun hätte, deswegen habe ich den Code mal ohne boost::thread probiert. Ohne Erfolg, der Fehler war derselbe.</p>
<p>Ich hoffe ihr könnt mir irgendwie helfen? Was ist hier putt putt?</p>
<p>Danke im Voraus ihr Süßen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1869277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869277</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 15 Mar 2010 13:46:01 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Asynchroner Server Exception on Mon, 15 Mar 2010 13:58:02 GMT]]></title><description><![CDATA[<p>Warum benutzt Du nicht einfach den Debugger und guckst den CallStack an?</p>
<blockquote>
<p>Ich dachte immer das dieses Mutex-Gedöns etwas mit Thread's zu tun hätte, deswegen habe ich den Code mal ohne boost::thread probiert.</p>
</blockquote>
<p>Hat es auch. In Boost.Asio werden z.T. zusätzliche Threads erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1869289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869289</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 15 Mar 2010 13:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Asynchroner Server Exception on Mon, 15 Mar 2010 14:11:04 GMT]]></title><description><![CDATA[<p>Erstmal danke schön <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f618.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_blowing_a_kiss"
      title=":-*"
      alt="😘"
    /><br />
Hm, ja habe ich gemacht. Allerdings hat mich das nicht weitergebracht. Nun weiß ich aber woran es liegt:<br />
Zeile 32:</p>
<pre><code class="language-cpp">m_pAcceptor(new boost::asio::ip::tcp::acceptor(m_IOService, m_EndPoint))
</code></pre>
<p>Habe ich einen an der Schüppe? o0 Passt doch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1869302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869302</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 15 Mar 2010 14:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Asynchroner Server Exception on Mon, 15 Mar 2010 14:19:31 GMT]]></title><description><![CDATA[<p>Ich hab gelesen, dass die Initialisierungsliste von Rechts abgearbeitet wird, hab aber die Quelle nicht parat.<br />
m_EndPoint ist noch nicht initialisiert, wenn du deinen acceptor erstellst.</p>
<p>Funktioniert es so?</p>
<pre><code class="language-cpp">namespace Network
{
    AsyncTCPServer::AsyncTCPServer(const unsigned short Port) :
        m_pAcceptor(new boost::asio::ip::tcp::acceptor(m_IOService, m_EndPoint)),
        m_EndPoint(boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), Port)),
        m_Socket(m_IOService)
    {
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1869307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869307</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 15 Mar 2010 14:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Asynchroner Server Exception on Mon, 15 Mar 2010 14:25:18 GMT]]></title><description><![CDATA[<p>Leider nein, selber Fehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1869313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869313</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 15 Mar 2010 14:25:18 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Asynchroner Server Exception on Mon, 15 Mar 2010 14:29:16 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Das stimmt fast.<br />
Die Initialisierungsliste wird in der Reihenfolge abgearbeitet, in der die Variablen in der Klasse deklariert sind. Die Reihenfolge in der Initialisierungsliste <em>spielt hingegen keine</em> Rolle. So steht es im Standard.</p>
<p>Den Grund des Fehlschlags hat l'abra d'or also schon passend genannt.</p>
<p>Also so:</p>
<pre><code class="language-cpp">private:
			boost::asio::io_service						      m_IOService;
			boost::asio::ip::tcp::endpoint					  m_EndPoint;
			boost::asio::ip::tcp::socket					  m_Socket;
			boost::scoped_ptr&lt;boost::asio::ip::tcp::acceptor&gt; m_pAcceptor;
			boost::scoped_ptr&lt;boost::thread&gt;				  m_pThread;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1869314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869314</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 15 Mar 2010 14:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Asynchroner Server Exception on Mon, 15 Mar 2010 14:41:05 GMT]]></title><description><![CDATA[<p>Unglaublich, ich hatte die ganze Zeit das Gefühl das es daran liegt. Dachte mir nur jedesmal: &quot;Mensch, ich bin doch nicht blöd, was mache ich hier&quot; und habe wieder Steuerung + Z gedrückt.</p>
<p>Aber interessant, wusste ich zugegebenermaßen noch gar nicht! Vielen lieben Dank meine Süßen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1869325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869325</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 15 Mar 2010 14:41:05 GMT</pubDate></item></channel></rss>