<?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[valgrind]]></title><description><![CDATA[<p>Hallo NG,</p>
<p>ich bin nun schon länger auf der Suche nach einer Erklärung zu folgender Valgrind Meldung:</p>
<p>&quot;Conditional jump or move depends on uninitialised values&quot;</p>
<p>Auch die Orginal Doku sagt nichts zu der Meldung. Zumindest hab ich in den 200 Seiten noch nichts gefunden. Sie kommt immer an Funktionsaufrufen, wie __register_afork, ptmalloc_init, ... aber auch in meinen eigenen Funktionen. Weiß mir jemand etwas sinvolles dazu?</p>
<p>Grüße, M.Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195506/valgrind</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 04:11:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195506.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Oct 2007 12:28:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 12:28:50 GMT]]></title><description><![CDATA[<p>Hallo NG,</p>
<p>ich bin nun schon länger auf der Suche nach einer Erklärung zu folgender Valgrind Meldung:</p>
<p>&quot;Conditional jump or move depends on uninitialised values&quot;</p>
<p>Auch die Orginal Doku sagt nichts zu der Meldung. Zumindest hab ich in den 200 Seiten noch nichts gefunden. Sie kommt immer an Funktionsaufrufen, wie __register_afork, ptmalloc_init, ... aber auch in meinen eigenen Funktionen. Weiß mir jemand etwas sinvolles dazu?</p>
<p>Grüße, M.Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387858</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Thu, 18 Oct 2007 12:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 12:33:59 GMT]]></title><description><![CDATA[<p>Frei übersetzt: &quot;bedingter Sprung basiert auf nicht-initialisierten Werten&quot;. Sowas könnte vorkommen, wenn du den Wert einer Variablen verwendest, bevor sie initialisiert wurde:</p>
<pre><code class="language-cpp">int val;
while(val&gt;100)
{
  cout&lt;&lt;&quot;Bitte Wert eingeben&quot;;
  cin&gt;&gt;val;
}
</code></pre>
<p>Hier kannst du nicht vorhersagen, welchen Wert 'val' beim ersten Schleifendurchlauf haben wird - also ist das Ergebnis undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387865</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 18 Oct 2007 12:33:59 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 12:50:22 GMT]]></title><description><![CDATA[<p>Aber warum meckert mir valgrind unter anderem immer diese Zeile an.</p>
<pre><code class="language-cpp">fprintf(stderr,&quot;Info:&quot;);
</code></pre>
<p>Sie stammt aus einer eigenen lib die gleichermaßen von C Programmen aber auch von CPP eingebunden wird. An dieser Zeile ist eingentlich nichts auszusetzten.</p>
<p>Grüße M. Incani</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Frei übersetzt: &quot;bedingter Sprung basiert auf nicht-initialisierten Werten&quot;. Sowas könnte vorkommen, wenn du den Wert einer Variablen verwendest, bevor sie initialisiert wurde:</p>
<pre><code class="language-cpp">int val;
while(val&gt;100)
{
  cout&lt;&lt;&quot;Bitte Wert eingeben&quot;;
  cin&gt;&gt;val;
}
</code></pre>
<p>Hier kannst du nicht vorhersagen, welchen Wert 'val' beim ersten Schleifendurchlauf haben wird - also ist das Ergebnis undefiniert.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1387886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387886</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Thu, 18 Oct 2007 12:50:22 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 13:11:39 GMT]]></title><description><![CDATA[<p>BlackPepper schrieb:</p>
<blockquote>
<p>Aber warum meckert mir valgrind unter anderem immer diese Zeile an.</p>
<pre><code class="language-cpp">fprintf(stderr,&quot;Info:&quot;);
</code></pre>
<p>Sie stammt aus einer eigenen lib die gleichermaßen von C Programmen aber auch von CPP eingebunden wird. An dieser Zeile ist eingentlich nichts auszusetzten.</p>
</blockquote>
<p>fprintf hat eine Ellipse als letzten Parameter und der ist bei dir leer.</p>
<p>Zu deinen anderen Problemfällen, kann das ganze auch an statics liegen die erst später initialisiert werden. (oder zum Beispiel argv = NULL)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387904</guid><dc:creator><![CDATA[Gator]]></dc:creator><pubDate>Thu, 18 Oct 2007 13:11:39 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 13:21:55 GMT]]></title><description><![CDATA[<p>Gator schrieb:</p>
<blockquote>
<p>BlackPepper schrieb:</p>
<blockquote>
<p>Aber warum meckert mir valgrind unter anderem immer diese Zeile an.</p>
<pre><code class="language-cpp">fprintf(stderr,&quot;Info:&quot;);
</code></pre>
<p>Sie stammt aus einer eigenen lib die gleichermaßen von C Programmen aber auch von CPP eingebunden wird. An dieser Zeile ist eingentlich nichts auszusetzten.</p>
</blockquote>
<p>fprintf hat eine Ellipse als letzten Parameter und der ist bei dir leer.</p>
</blockquote>
<p>Oh Ha!!! Und warum sollte das ein Problem sein?</p>
<p>Gator schrieb:</p>
<blockquote>
<p>Zu deinen anderen Problemfällen, kann das ganze auch an statics liegen die erst später initialisiert werden. (oder zum Beispiel argv = NULL)</p>
</blockquote>
<p>Meinst Du mit static</p>
<pre><code class="language-cpp">static int x = 0;
</code></pre>
<p>Und warum meckert mir Valgrind das an? Das hat doch nichts mit Speicherfehlern zu tun, oder?</p>
<p>Grüße M. Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387914</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Thu, 18 Oct 2007 13:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 13:36:19 GMT]]></title><description><![CDATA[<p>BlackPepper schrieb:</p>
<blockquote>
<p>Gator schrieb:</p>
<blockquote>
<p>BlackPepper schrieb:</p>
<blockquote>
<p>Aber warum meckert mir valgrind unter anderem immer diese Zeile an.</p>
<pre><code class="language-cpp">fprintf(stderr,&quot;Info:&quot;);
</code></pre>
<p>Sie stammt aus einer eigenen lib die gleichermaßen von C Programmen aber auch von CPP eingebunden wird. An dieser Zeile ist eingentlich nichts auszusetzten.</p>
</blockquote>
<p>fprintf hat eine Ellipse als letzten Parameter und der ist bei dir leer.</p>
</blockquote>
<p>Oh Ha!!! Und warum sollte das ein Problem sein?</p>
</blockquote>
<p>Unter Umständen (!?), weil da beim Aufruf dieser Funktion keine NULL in der Stackframe steht sondern ein Pointer ins Nirvana!</p>
<p>BlackPepper schrieb:</p>
<blockquote>
<p>Gator schrieb:</p>
<blockquote>
<p>&quot;]<br />
Zu deinen anderen Problemfällen, kann das ganze auch an statics liegen die erst später initialisiert werden. (oder zum Beispiel argv = NULL)</p>
</blockquote>
<p>Meinst Du mit static</p>
<pre><code class="language-cpp">static int x = 0;
</code></pre>
<p>Und warum meckert mir Valgrind das an? Das hat doch nichts mit Speicherfehlern zu tun, oder?<br />
Grüße M. Incani</p>
</blockquote>
<p>Ja zum einen das. Du weisst ja sicher eh', das einige glibc Funktionen nicht threadsafe sind. (gettime(), etc..)</p>
<p>Zum Anderen, hab ich auch an sowas gedacht:</p>
<p>static int i;</p>
<p>if(1==1) // Immer wahr aber valgrind kann das net wissen. (nonoptimized debug)<br />
i = 1;</p>
<p>pointer += (int)i;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387926</guid><dc:creator><![CDATA[Gator]]></dc:creator><pubDate>Thu, 18 Oct 2007 13:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 13:45:25 GMT]]></title><description><![CDATA[<p>Gator schrieb:</p>
<blockquote>
<p>BlackPepper schrieb:</p>
<blockquote>
<p>Gator schrieb:</p>
<blockquote>
<p>BlackPepper schrieb:</p>
<blockquote>
<p>Aber warum meckert mir valgrind unter anderem immer diese Zeile an.</p>
<pre><code class="language-cpp">fprintf(stderr,&quot;Info:&quot;);
</code></pre>
<p>Sie stammt aus einer eigenen lib die gleichermaßen von C Programmen aber auch von CPP eingebunden wird. An dieser Zeile ist eingentlich nichts auszusetzten.</p>
</blockquote>
<p>fprintf hat eine Ellipse als letzten Parameter und der ist bei dir leer.</p>
</blockquote>
<p>Oh Ha!!! Und warum sollte das ein Problem sein?</p>
</blockquote>
<p>Unter Umständen (!?), weil da beim Aufruf dieser Funktion keine NULL in der Stackframe steht sondern ein Pointer ins Nirvana!</p>
</blockquote>
<p>Also schreibe ich wohl besser</p>
<pre><code class="language-cpp">fprintf(stderr,&quot;Info:&quot;, NULL);
</code></pre>
<p>Gator schrieb:</p>
<blockquote>
<p>BlackPepper schrieb:</p>
<blockquote>
<p>Gator schrieb:</p>
<blockquote>
<p>&quot;]<br />
Zu deinen anderen Problemfällen, kann das ganze auch an statics liegen die erst später initialisiert werden. (oder zum Beispiel argv = NULL)</p>
</blockquote>
<p>Meinst Du mit static</p>
<pre><code class="language-cpp">static int x = 0;
</code></pre>
<p>Und warum meckert mir Valgrind das an? Das hat doch nichts mit Speicherfehlern zu tun, oder?<br />
Grüße M. Incani</p>
</blockquote>
<p>Ja zum einen das. Du weisst ja sicher eh', das einige glibc Funktionen nicht threadsafe sind. (gettime(), etc..)</p>
<p>Zum Anderen, hab ich auch an sowas gedacht:</p>
<p>static int i;</p>
<p>if(1==1) // Immer wahr aber valgrind kann das net wissen. (nonoptimized debug)<br />
i = 1;</p>
<p>pointer += (int)i;</p>
</blockquote>
<p>Das hier leuchtet ein. Trotzdem scheint die Fehlermeldung &quot;Conditional jump or move ...&quot; in meinen Augen oft keine Ursache zu haben.</p>
<p>Grüße M. Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387940</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Thu, 18 Oct 2007 13:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 13:47:29 GMT]]></title><description><![CDATA[<p>Gator schrieb:</p>
<blockquote>
<p>Unter Umständen (!?), weil da beim Aufruf dieser Funktion keine NULL in der Stackframe steht sondern ein Pointer ins Nirvana!</p>
</blockquote>
<p>Hä?</p>
<p>Wenn Du bei der Ellipse keine Parameter übergibst landen auch keine auf dem Stack (wenn die Maschine einen Stack hat :D) - und wenn fprintf keine Formatkennungen im Formatstring findet, holt es sich auch nichts vom Stack, von daher - kein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387942</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 18 Oct 2007 13:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 14:00:59 GMT]]></title><description><![CDATA[<p>Kleine Zusatzbemerkung, Valgrind beanstandet mir sehr oft die Aufrufe aus den Standardlibs, also aufrufe wie open, write, close, nanosleep und viele andere.</p>
<p>Auch Dinde wie new, delete, cout, usw werden beanstandet. Wie stelle ich das ab?</p>
<p>Grüße M. Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387956</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Thu, 18 Oct 2007 14:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 16:23:32 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Gator schrieb:</p>
<blockquote>
<p>Unter Umständen (!?), weil da beim Aufruf dieser Funktion keine NULL in der Stackframe steht sondern ein Pointer ins Nirvana!</p>
</blockquote>
<p>Hä?</p>
<p>Wenn Du bei der Ellipse keine Parameter übergibst landen auch keine auf dem Stack (wenn die Maschine einen Stack hat :D) - und wenn fprintf keine Formatkennungen im Formatstring findet, holt es sich auch nichts vom Stack, von daher - kein Problem.</p>
</blockquote>
<p>Du hast recht. Jedenfalls semantisch. Nur hat die Signatur der Funktion immer einen Ellipsis Parameter, egal ob da jetzt was drinnen steht oder nicht. Beim Aufruf der Funktion zur Laufzeit wird da trotzdem ein Platz freigehalten, egal ob jetzt auf dem Stack oder wenn du willst in einem Register. Die aufgerufene Funktion kann ja nicht wissen das du nichts übergibst. In der Stackframe wird das also trotzdem gespeichert. Obgleich, wird der Inhalt der Ellipsisparameterliste sowieso nicht über die Stackframe übergeben, sonder über einen pointer &quot;rechts&quot; vom STACKPOINTER bzw. auf dem heap -&gt; hence: va_start).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388058</guid><dc:creator><![CDATA[Gator]]></dc:creator><pubDate>Thu, 18 Oct 2007 16:23:32 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Thu, 18 Oct 2007 16:34:08 GMT]]></title><description><![CDATA[<p>BlackPepper schrieb:</p>
<blockquote>
<p>Kleine Zusatzbemerkung, Valgrind beanstandet mir sehr oft die Aufrufe aus den Standardlibs, also aufrufe wie open, write, close, nanosleep und viele andere.</p>
<p>Auch Dinde wie new, delete, cout, usw werden beanstandet. Wie stelle ich das ab?</p>
<p>Grüße M. Incani</p>
</blockquote>
<p><a href="http://valgrind.org/" rel="nofollow">http://valgrind.org/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388065</guid><dc:creator><![CDATA[Gator]]></dc:creator><pubDate>Thu, 18 Oct 2007 16:34:08 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Fri, 19 Oct 2007 07:37:17 GMT]]></title><description><![CDATA[<p>Gator schrieb:</p>
<blockquote>
<p>BlackPepper schrieb:</p>
<blockquote>
<p>Kleine Zusatzbemerkung, Valgrind beanstandet mir sehr oft die Aufrufe aus den Standardlibs, also aufrufe wie open, write, close, nanosleep und viele andere.</p>
<p>Auch Dinde wie new, delete, cout, usw werden beanstandet. Wie stelle ich das ab?</p>
<p>Grüße M. Incani</p>
</blockquote>
<p><a href="http://valgrind.org/" rel="nofollow">http://valgrind.org/</a></p>
</blockquote>
<p>Hallo Gator,</p>
<p>ich wäre nicht hier, wenn ich nicht schon auf deren Homepage gekuckt hätte. Wenn Du weißt, daß es auf der Homepage einen Hinweis gibt, wäre ich Dir dankbar, wenn Du mir sagen könntest wo. Oder was ich machen muß.</p>
<p>Grüße, M. Incani</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388333</guid><dc:creator><![CDATA[BlackPepper]]></dc:creator><pubDate>Fri, 19 Oct 2007 07:37:17 GMT</pubDate></item><item><title><![CDATA[Reply to valgrind on Fri, 19 Oct 2007 16:47:14 GMT]]></title><description><![CDATA[<p>du musst einfach die fehler, die du nicht haben willst, in eine suppressions-datei kopieren und mittels valgrind --suppressions=meinedatei angeben. allerdings sollten die warnungen für funktionen aus den standardlibs in der standardsuppressionsdatei drin stehen und gar nicht auftauchen. schau mal nach, ob die standarddatei ($PREFIX/lib/valgrind/default.supp) leer ist oder ob sie vllt für eine andere version der glibc und deiner c++libs ist.</p>
<p>zum erzeugen der unterdrückungen solltest du valgrind --gen-suppressions=yes oder --gen-suppressions=all benutzen. letzteres natürlich nur, wenn du weißt, dass keine fehler mehr in deinem code enthalten sind.<br />
(schau aber auch mal in die man-page für nähere erklärungen der beiden kommandozeilenoptionen.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388658</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Fri, 19 Oct 2007 16:47:14 GMT</pubDate></item></channel></rss>