<?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[Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem in meinem Code. Und zwar werden aus meinem Programm einige Funktionen in externen Bibliotheken aufgerufen, was auch alles funktioniert. Den Funktionen muss ich einige Arrays übergeben, was ebenfalls klappt (mit kleineren Testproblemen konnte ich auch das Programm und das Verhalten verifizieren). Allerdings kommt es ab einer bestimmten Arraygrenze zu &quot;Segmentation faults&quot;. Daraufhin hatte ich schon die verfügbare Stackgröße verändert, was allerdings nicht den gewünschten Erfolg gebracht hat. Hat hier jemand eine Idee, wie ich hier am besten vorgehe, also nach welchen Dingen ich noch einmal schauen könnte, damit das Programm auch mit größeren Arrays normal durchläuft?</p>
<p>Vielen Dank bereits im Voraus!</p>
<p>Viele Grüße<br />
Misow</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282305/segmentation-fault-bei-aufrufen-von-funktionen-aus-bibliotheken</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 01:41:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282305.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Feb 2011 17:19:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken on Thu, 17 Feb 2011 17:19:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem in meinem Code. Und zwar werden aus meinem Programm einige Funktionen in externen Bibliotheken aufgerufen, was auch alles funktioniert. Den Funktionen muss ich einige Arrays übergeben, was ebenfalls klappt (mit kleineren Testproblemen konnte ich auch das Programm und das Verhalten verifizieren). Allerdings kommt es ab einer bestimmten Arraygrenze zu &quot;Segmentation faults&quot;. Daraufhin hatte ich schon die verfügbare Stackgröße verändert, was allerdings nicht den gewünschten Erfolg gebracht hat. Hat hier jemand eine Idee, wie ich hier am besten vorgehe, also nach welchen Dingen ich noch einmal schauen könnte, damit das Programm auch mit größeren Arrays normal durchläuft?</p>
<p>Vielen Dank bereits im Voraus!</p>
<p>Viele Grüße<br />
Misow</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022399</guid><dc:creator><![CDATA[Misow]]></dc:creator><pubDate>Thu, 17 Feb 2011 17:19:15 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken on Thu, 17 Feb 2011 17:27:14 GMT]]></title><description><![CDATA[<p>Klingt, als ob über die Array-Grenzen hinaus geschrieben wird und bei entsprechender Größe geschützte Bereiche angefasst werden.</p>
<p>Hast du von den externen Bibliotheken Debug-Versionen?<br />
Was sind das für Arrays (C-Array)?<br />
Zusätzliche Größenangabe vielleicht vergessen? Irgendwie müssen die externen Funktionen ja das Ende erkennen.<br />
Oder bestimmtes Terminationszeichen vergessen?</p>
<p>Einfach Stack/Heap-Größen manipulieren wird dir nicht helfen, du verschiebst maximal das Problem.</p>
<p>HTH</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022402</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 17 Feb 2011 17:27:14 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken on Thu, 17 Feb 2011 18:01:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>erst einmal vielen Dank für Deine Antwort! Als Arrays bekommen die Funktionen welche vom Typ int und double, wobei es komischerweise keinen Unterschied macht, ob die Arrays im heap oder stack erzeugt sind. Daneben werden int-Werte als Terminierungsbedingung übergeben.</p>
<p>Allerdings hatte ich vorhin noch eine wesentliche Angabe vergessen. Ich habe die Bibliotheken bei mir so compiliert und installiert, dass eine parallele Ausführung mit Hilfe von OpenMP möglich ist. Daher habe ich auch die Möglichkeit, ein Programm einmal sequentiell bzw. parallel durchlaufen zu lassen. Falls nur ein Prozessor verwendet wird, klappt bei einem Beispiel alles, während es in der parallelen Version (bis auf die OpenMP-Parallelisierungsanweisung ist alles gleich) zum &quot;Segmentation fault&quot; kommt. Nur bei kleineren Testproblemen klappt es sowohl im sequentiellen als auch im parallelen Mode.</p>
<p>Daher kann ich auch ausschließen, dass im Programm ein Fehler ist, da sonst auch in der sequentiellen Ausführung ja mal was hätte schief gehen müssen. Dass das Problem bei den Bibliotheken liegt, kann ich auch ausschließen, da ja kleinere Programme ohne Probleme gelöst werden können. Ich weiß also ehrlich gesagt nicht so richtig weiter.</p>
<p>Vielleicht helfen die zusätzlichen Infos ja nochmal!</p>
<p>Viele Grüße und noch einmal Danke!<br />
Misow</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022415</guid><dc:creator><![CDATA[Misow]]></dc:creator><pubDate>Thu, 17 Feb 2011 18:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken on Thu, 17 Feb 2011 18:46:01 GMT]]></title><description><![CDATA[<p>Hast du die Möglichkeit, intelligente Arrays zu verwenden? Wenn du einen neueren Compiler oder die Boost-Bibliothek hast, sollten die Klassentemplates <code>std::tr1::array</code> bzw. <code>boost::array</code> verfügbar sein. Diese stellen Index- und Iteratorverletzungen im Debug-Modus automatisch fest. Genau aus dem Grund (und wegen ein paar weiterer komfortabler Features) setze ich schon seit Langem keine rohen Arrays mehr ein.</p>
<p>Dass es im sequentiellen Modus funktioniert, lässt nicht unbedingt Schlüsse zu. Es kann sich um undefiniertes Verhalten handeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022441</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 17 Feb 2011 18:46:01 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken on Sun, 20 Feb 2011 21:02:53 GMT]]></title><description><![CDATA[<p>Hallo Nexus,</p>
<p>vielen Dank für die Idee mit den intelligenten Arrays. Leider klappt dies nicht, da die Funktionen &quot;normale&quot; Arrays als Eingabeparameter benötigen.</p>
<p>Auf jeden Fall habe ich an den letzten beiden Tagen noch einmal eine ganze Menge probiert und auch noch einmal das Programm überprüft. Der Fehler kann (meiner Einschätzung nach) nicht hier liegen.</p>
<p>Dabei ist mir aber eine andere Problemstelle aufgefallen. Und zwar kann man über /etc/security/limits.conf den verfügbaren Stack (dauerhaft) vergrößern, allerdings soll sich dies anscheinend noch nicht auf die jeweiligen Stackbereiche der OpenMP-Parallelisierung auswirken. Das würde einer Ansicht nach auch erklären, warum der Fehler immer (im sequentiellen Mode habe ich noch nie einen Fehler gehabt!) auftritt.<br />
Diesen Stack eines jeden Threads müsste man über die Umgebungsvariable &quot;OMP_STACKSIZE&quot; einstellen, was ich allerdings nicht hinbekomme, da ich mein Programm (noch nicht) aus dem Terminal starten will, sondern direkt aus der IDE (Netbeans mit GCC 4.4).<br />
Weiß hier vielleicht jemand einen Rat, wie ich dies einstellen kann?</p>
<p>Vielen Dank dafür im Voraus!</p>
<p>Viele Grüße<br />
Misow</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023957</guid><dc:creator><![CDATA[Misow]]></dc:creator><pubDate>Sun, 20 Feb 2011 21:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken on Sun, 20 Feb 2011 22:55:58 GMT]]></title><description><![CDATA[<p>Misow schrieb:</p>
<blockquote>
<p>vielen Dank für die Idee mit den intelligenten Arrays. Leider klappt dies nicht, da die Funktionen &quot;normale&quot; Arrays als Eingabeparameter benötigen.</p>
</blockquote>
<p>Das ist kein Argument dagegen. Intelligente Arrays (insbesondere die Container <code>std::tr1::array</code> und <code>std::vector</code> ) sind kompatibel zu C-Arrays. Einfach Adresse vom ersten Element holen.</p>
<p>Das andere ist eher ein IDE-Problem und als solches im C++-Forum schlecht aufgehoben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2023991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2023991</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 20 Feb 2011 22:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation fault bei Aufrufen von Funktionen aus Bibliotheken on Mon, 21 Feb 2011 18:51:44 GMT]]></title><description><![CDATA[<p>Hallo Nexus,</p>
<p>vielen Dank für die Antwort und den Hinweis! Da werde ich mir die Arrays noch einmal genauer anschauen um zu sehen wie das funktioniert. Ist dann ja auf jeden Fall hilfreich, wenn zumindest diese Fehlerquelle ausgeschlossen ist.</p>
<p>Viele Grüße<br />
Misow</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2024367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2024367</guid><dc:creator><![CDATA[Misow]]></dc:creator><pubDate>Mon, 21 Feb 2011 18:51:44 GMT</pubDate></item></channel></rss>