<?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]]></title><description><![CDATA[<p>Also, ich habe noch nicht wirklich viel Ahnung von C++ und sitze jetzt das erste Mal vor einem Segmentation Fault.<br />
Es geht darum, ein File einzulesen. Letztendlich sollen es zwei mögliche Funktionalitäten werden, deswegen wird die if-Abfrage so gestellt.<br />
Ich habe den Code mal auf den minimalen Fall, in dem ich den Segmentation Fault noch bekomme, runtergebrochen (auf gut Deutsch: momentan tut der Code nichts sinnvolles!)<br />
Was ich sehr merkwürdig finde: der Fehler kommt noch bevor die Zeile mit der if-Abfrage ausgeführt wird. Deswegen bin ich gerade am verzweifeln, weil ich somit auch nicht wirklich debuggen kann.</p>
<p>hier der code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

int main(int argc, char *argv[])
{
	if (argc == 5 &amp;&amp; strcmp(argv[1], &quot;bas&quot;) == 0)
	{
		ifstream inFile;
		inFile.open(argv[2], ios::in);
		if (!inFile.good())
		{
			cerr &lt;&lt; &quot;Couldn't open inFile &quot; &lt;&lt; argv[2] &lt;&lt;&quot;!&quot;&lt;&lt; endl;
			return -1;
		}
		int sidelength = atoi(argv[3]);
		if (1000000 % sidelength != 0)
		{
			cerr &lt;&lt; &quot;Sidelength has to be a factor of 1000000!&quot;;
			return -1;
		}
		ofstream outFile;
		outFile.open(argv[4]);
		if (!outFile.good())
		{
			cerr &lt;&lt; &quot;Couldn't open outFile &quot; &lt;&lt; argv[4] &lt;&lt; &quot;!&quot; &lt;&lt; endl;
			return -1;
		}
		char* pos;
		char* data;
		int x, y;
		int types[1000][1000];
		double alleleFreqs[1000][1000];
		inFile.close();
		outFile.close();
	}
	else
	{
		cerr &lt;&lt; &quot;usage:\tantsimulation_auswertung [bas] [bas-file] [side length of parts (int)]\n&quot;
				&quot;\t[outFile]&quot;&lt;&lt; endl;
		return -1;
	}
	return 0;
}
</code></pre>
<p>Ich habe mal strace damit laufen lassen, hier der Output (der mir leider nicht wirklich viel sagt und der sich auch nicht in eine besser lesbare Form bringen lassen will):</p>
<p>execve(&quot;./antsimulationToR&quot;, [&quot;./antsimulationToR&quot;, &quot;bas&quot;, &quot;/home/rebecca/bachelorarbeit/ant&quot;..., &quot;100&quot;, &quot;/home/rebecca/bachelorarbeit/ant&quot;...], [/* 35 vars */]) = 0<br />
brk(0) = 0x602000<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c5f000<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c5d000<br />
access(&quot;/etc/ld.so.preload&quot;, R_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/etc/ld.so.cache&quot;, O_RDONLY) = 3<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=128996, ...}) = 0<br />
mmap(NULL, 128996, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f5e38c3d000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/usr/lib/libstdc++.so.6&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0@I\5\0\0&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=1014808, ...}) = 0<br />
mmap(NULL, 3186696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e38738000<br />
mprotect(0x7f5e38827000, 2097152, PROT_NONE) = 0<br />
mmap(0x7f5e38a27000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xef000) = 0x7f5e38a27000<br />
mmap(0x7f5e38a30000, 73736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5e38a30000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/lib/libm.so.6&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0\260&gt;\0\0&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=526560, ...}) = 0<br />
mmap(NULL, 2621672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e384b7000<br />
mprotect(0x7f5e38537000, 2093056, PROT_NONE) = 0<br />
mmap(0x7f5e38736000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7f000) = 0x7f5e38736000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/lib/libgcc_s.so.1&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0\240!\0\0&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=56072, ...}) = 0<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c3c000<br />
mmap(NULL, 2151816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e382a9000<br />
mprotect(0x7f5e382b6000, 2097152, PROT_NONE) = 0<br />
mmap(0x7f5e384b6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x7f5e384b6000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/lib/libc.so.6&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0\340\342&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0755, st_size=1436976, ...}) = 0<br />
mmap(NULL, 3543672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e37f47000<br />
mprotect(0x7f5e3809f000, 2097152, PROT_NONE) = 0<br />
mmap(0x7f5e3829f000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x158000) = 0x7f5e3829f000<br />
mmap(0x7f5e382a4000, 17016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5e382a4000<br />
close(3) = 0<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c3b000<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c3a000<br />
arch_prctl(ARCH_SET_FS, 0x7f5e38c3a6f0) = 0<br />
mprotect(0x7f5e3829f000, 12288, PROT_READ) = 0<br />
mprotect(0x7f5e38a27000, 24576, PROT_READ) = 0<br />
munmap(0x7f5e38c3d000, 128996) = 0<br />
--- SIGSEGV (Segmentation fault) @ 0 (0) ---<br />
+++ killed by SIGSEGV +++<br />
Process 8445 detached</p>
<p>Wenn mir irgendjemand helfen könnte (oder auch nur eine Idee hätte, wie ich weitersuchen kann) wäre ich wirklich glücklich!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272428/segmentation-fault</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 22:11:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272428.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Aug 2010 14:17:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segmentation Fault on Tue, 17 Aug 2010 14:17:28 GMT]]></title><description><![CDATA[<p>Also, ich habe noch nicht wirklich viel Ahnung von C++ und sitze jetzt das erste Mal vor einem Segmentation Fault.<br />
Es geht darum, ein File einzulesen. Letztendlich sollen es zwei mögliche Funktionalitäten werden, deswegen wird die if-Abfrage so gestellt.<br />
Ich habe den Code mal auf den minimalen Fall, in dem ich den Segmentation Fault noch bekomme, runtergebrochen (auf gut Deutsch: momentan tut der Code nichts sinnvolles!)<br />
Was ich sehr merkwürdig finde: der Fehler kommt noch bevor die Zeile mit der if-Abfrage ausgeführt wird. Deswegen bin ich gerade am verzweifeln, weil ich somit auch nicht wirklich debuggen kann.</p>
<p>hier der code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

int main(int argc, char *argv[])
{
	if (argc == 5 &amp;&amp; strcmp(argv[1], &quot;bas&quot;) == 0)
	{
		ifstream inFile;
		inFile.open(argv[2], ios::in);
		if (!inFile.good())
		{
			cerr &lt;&lt; &quot;Couldn't open inFile &quot; &lt;&lt; argv[2] &lt;&lt;&quot;!&quot;&lt;&lt; endl;
			return -1;
		}
		int sidelength = atoi(argv[3]);
		if (1000000 % sidelength != 0)
		{
			cerr &lt;&lt; &quot;Sidelength has to be a factor of 1000000!&quot;;
			return -1;
		}
		ofstream outFile;
		outFile.open(argv[4]);
		if (!outFile.good())
		{
			cerr &lt;&lt; &quot;Couldn't open outFile &quot; &lt;&lt; argv[4] &lt;&lt; &quot;!&quot; &lt;&lt; endl;
			return -1;
		}
		char* pos;
		char* data;
		int x, y;
		int types[1000][1000];
		double alleleFreqs[1000][1000];
		inFile.close();
		outFile.close();
	}
	else
	{
		cerr &lt;&lt; &quot;usage:\tantsimulation_auswertung [bas] [bas-file] [side length of parts (int)]\n&quot;
				&quot;\t[outFile]&quot;&lt;&lt; endl;
		return -1;
	}
	return 0;
}
</code></pre>
<p>Ich habe mal strace damit laufen lassen, hier der Output (der mir leider nicht wirklich viel sagt und der sich auch nicht in eine besser lesbare Form bringen lassen will):</p>
<p>execve(&quot;./antsimulationToR&quot;, [&quot;./antsimulationToR&quot;, &quot;bas&quot;, &quot;/home/rebecca/bachelorarbeit/ant&quot;..., &quot;100&quot;, &quot;/home/rebecca/bachelorarbeit/ant&quot;...], [/* 35 vars */]) = 0<br />
brk(0) = 0x602000<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c5f000<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c5d000<br />
access(&quot;/etc/ld.so.preload&quot;, R_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/etc/ld.so.cache&quot;, O_RDONLY) = 3<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=128996, ...}) = 0<br />
mmap(NULL, 128996, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f5e38c3d000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/usr/lib/libstdc++.so.6&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0@I\5\0\0&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=1014808, ...}) = 0<br />
mmap(NULL, 3186696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e38738000<br />
mprotect(0x7f5e38827000, 2097152, PROT_NONE) = 0<br />
mmap(0x7f5e38a27000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xef000) = 0x7f5e38a27000<br />
mmap(0x7f5e38a30000, 73736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5e38a30000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/lib/libm.so.6&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0\260&gt;\0\0&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=526560, ...}) = 0<br />
mmap(NULL, 2621672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e384b7000<br />
mprotect(0x7f5e38537000, 2093056, PROT_NONE) = 0<br />
mmap(0x7f5e38736000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7f000) = 0x7f5e38736000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/lib/libgcc_s.so.1&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0\240!\0\0&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0644, st_size=56072, ...}) = 0<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c3c000<br />
mmap(NULL, 2151816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e382a9000<br />
mprotect(0x7f5e382b6000, 2097152, PROT_NONE) = 0<br />
mmap(0x7f5e384b6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x7f5e384b6000<br />
close(3) = 0<br />
access(&quot;/etc/ld.so.nohwcap&quot;, F_OK) = -1 ENOENT (No such file or directory)<br />
open(&quot;/lib/libc.so.6&quot;, O_RDONLY) = 3<br />
read(3, &quot;\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0&gt;\0\1\0\0\0\340\342&quot;..., 832) = 832<br />
fstat(3, {st_mode=S_IFREG|0755, st_size=1436976, ...}) = 0<br />
mmap(NULL, 3543672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f5e37f47000<br />
mprotect(0x7f5e3809f000, 2097152, PROT_NONE) = 0<br />
mmap(0x7f5e3829f000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x158000) = 0x7f5e3829f000<br />
mmap(0x7f5e382a4000, 17016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f5e382a4000<br />
close(3) = 0<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c3b000<br />
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5e38c3a000<br />
arch_prctl(ARCH_SET_FS, 0x7f5e38c3a6f0) = 0<br />
mprotect(0x7f5e3829f000, 12288, PROT_READ) = 0<br />
mprotect(0x7f5e38a27000, 24576, PROT_READ) = 0<br />
munmap(0x7f5e38c3d000, 128996) = 0<br />
--- SIGSEGV (Segmentation fault) @ 0 (0) ---<br />
+++ killed by SIGSEGV +++<br />
Process 8445 detached</p>
<p>Wenn mir irgendjemand helfen könnte (oder auch nur eine Idee hätte, wie ich weitersuchen kann) wäre ich wirklich glücklich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941046</guid><dc:creator><![CDATA[ismene]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:17:28 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault on Tue, 17 Aug 2010 14:23:28 GMT]]></title><description><![CDATA[<p>Ich rate mal (auch wenn es nicht dein erster Fehler sein mag, so ist es der erste Fehler den ich gerade sehe): Die Arrays in Zeilen 33, 34 sind viel zu groß für den Stack. Benutz vernünftige Datenstrukturen wie std::vector, dann hast du solche Probleme nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941049</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault on Tue, 17 Aug 2010 14:29:09 GMT]]></title><description><![CDATA[<p>vor dem if:</p>
<pre><code class="language-cpp">int main(int argc, char* argv[])
{
  argc == 5 &amp;&amp; argv[1];
}
</code></pre>
<p>erzeugt also auch eine zugriffsverletzung?<br />
oder meintest du ein anderes if?</p>
<p>bb</p>
<p>edit: ok, seppj sollte schon die richtige antwort gegeben haben^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941050</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:29:09 GMT</pubDate></item><item><title><![CDATA[Reply to Segmentation Fault on Tue, 17 Aug 2010 14:35:46 GMT]]></title><description><![CDATA[<p>JUHUUUU!<br />
Das ersetzen der Arrays durch Vectoren hat das Problem gelöst. Es war so klar, dass es irgendwas ganz simples ist.<br />
Vielen, vielen Dank für die schnelle Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941057</guid><dc:creator><![CDATA[ismene]]></dc:creator><pubDate>Tue, 17 Aug 2010 14:35:46 GMT</pubDate></item></channel></rss>