• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
4<title>2.�NEWS</title>
5<link rel="stylesheet" href="vg_basic.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7<link rel="home" href="index.html" title="Valgrind Documentation">
8<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
9<link rel="prev" href="dist.authors.html" title="1.�AUTHORS">
10<link rel="next" href="dist.readme.html" title="3.�README">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<div><table class="nav" width="100%" cellspacing="3" cellpadding="3" border="0" summary="Navigation header"><tr>
14<td width="22px" align="center" valign="middle"><a accesskey="p" href="dist.authors.html"><img src="images/prev.png" width="18" height="21" border="0" alt="Prev"></a></td>
15<td width="25px" align="center" valign="middle"><a accesskey="u" href="dist.html"><img src="images/up.png" width="21" height="18" border="0" alt="Up"></a></td>
16<td width="31px" align="center" valign="middle"><a accesskey="h" href="index.html"><img src="images/home.png" width="27" height="20" border="0" alt="Up"></a></td>
17<th align="center" valign="middle">Valgrind Distribution Documents</th>
18<td width="22px" align="center" valign="middle"><a accesskey="n" href="dist.readme.html"><img src="images/next.png" width="18" height="21" border="0" alt="Next"></a></td>
19</tr></table></div>
20<div class="chapter" title="2.�NEWS">
21<div class="titlepage"><div><div><h2 class="title">
22<a name="dist.news"></a>2.�NEWS</h2></div></div></div>
23<div class="literallayout"><p><br>
24������<br>
25Release�3.6.1�(16�February�2011)<br>
26~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
273.6.1�is�a�bug�fix�release.��It�adds�support�for�some�SSE4<br>
28instructions�that�were�omitted�in�3.6.0�due�to�lack�of�time.��Initial<br>
29support�for�glibc-2.13�has�been�added.��A�number�of�bugs�causing<br>
30crashing�or�assertion�failures�have�been�fixed.<br>
31<br>
32The�following�bugs�have�been�fixed�or�resolved.��Note�that�"n-i-bz"<br>
33stands�for�"not�in�bugzilla"�--�that�is,�a�bug�that�was�reported�to�us<br>
34but�never�got�a�bugzilla�entry.��We�encourage�you�to�file�bugs�in<br>
35bugzilla�(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than<br>
36mailing�the�developers�(or�mailing�lists)�directly�--�bugs�that�are<br>
37not�entered�into�bugzilla�tend�to�get�forgotten�about�or�ignored.<br>
38<br>
39To�see�details�of�a�given�bug,�visit<br>
40https://bugs.kde.org/show_bug.cgi?id=XXXXXX<br>
41where�XXXXXX�is�the�bug�number�as�listed�below.<br>
42<br>
43188572��Valgrind�on�Mac�should�suppress�setenv()�mem�leak<br>
44194402��vex�amd64-&gt;IR:�0x48�0xF�0xAE�0x4�(proper�FX{SAVE,RSTOR}�support)<br>
45210481��vex�amd64-&gt;IR:�Assertion�`sz�==�2�||�sz�==�4'�failed�(REX.W�POPQ)<br>
46246152��callgrind�internal�error�after�pthread_cancel�on�32�Bit�Linux<br>
47250038��ppc64:�Altivec�LVSR�and�LVSL�instructions�fail�their�regtest<br>
48254420��memory�pool�tracking�broken�<br>
49254957��Test�code�failing�to�compile�due�to�changes�in�memcheck.h<br>
50255009��helgrind/drd:�crash�on�chmod�with�invalid�parameter<br>
51255130��readdwarf3.c�parse_type_DIE�confused�by�GNAT�Ada�types<br>
52255355��helgrind/drd:�crash�on�threaded�programs�doing�fork<br>
53255358��==�255355<br>
54255418��(SSE4.x)�rint�call�compiled�with�ICC<br>
55255822��--gen-suppressions�can�create�invalid�files:�"too�many�callers�[...]"<br>
56255888��closing�valgrindoutput�tag�outputted�to�log-stream�on�error<br>
57255963��(SSE4.x)�vex�amd64-&gt;IR:�0x66�0xF�0x3A�0x9�0xDB�0x0�(ROUNDPD)<br>
58255966��Slowness�when�using�mempool�annotations<br>
59256387��vex�x86-&gt;IR:�0xD4�0xA�0x2�0x7�(AAD�and�AAM)<br>
60256600��super-optimized�strcasecmp()�false�positive<br>
61256669��vex�amd64-&gt;IR:�Unhandled�LOOPNEL�insn�on�amd64<br>
62256968��(SSE4.x)�vex�amd64-&gt;IR:�0x66�0xF�0x38�0x10�0xD3�0x66�(BLENDVPx)<br>
63257011��(SSE4.x)�vex�amd64-&gt;IR:�0x66�0xF�0x3A�0xE�0xFD�0xA0�(PBLENDW)<br>
64257063��(SSE4.x)�vex�amd64-&gt;IR:�0x66�0xF�0x3A�0x8�0xC0�0x0�(ROUNDPS)<br>
65257276��Missing�case�in�memcheck�--track-origins=yes<br>
66258870��(SSE4.x)�Add�support�for�EXTRACTPS�SSE�4.1�instruction<br>
67261966��(SSE4.x)�support�for�CRC32B�and�CRC32Q�is�lacking�(also�CRC32{W,L})<br>
68262985��VEX�regression�in�valgrind�3.6.0�in�handling�PowerPC�VMX<br>
69262995��(SSE4.x)�crash�when�trying�to�valgrind�gcc-snapshot�(PCMPxSTRx�$0)<br>
70263099��callgrind_annotate�counts�Ir�improperly�[...]<br>
71263877��undefined�coprocessor�instruction�on�ARMv7<br>
72265964��configure�FAIL�with�glibc-2.13<br>
73n-i-bz��Fix�compile�error�w/�icc-12.x�in�guest_arm_toIR.c<br>
74n-i-bz��Docs:�fix�bogus�descriptions�for�VALGRIND_CREATE_BLOCK�et�al<br>
75n-i-bz��Massif:�don't�assert�on�shmat()�with�--pages-as-heap=yes<br>
76n-i-bz��Bug�fixes�and�major�speedups�for�the�exp-DHAT�space�profiler<br>
77n-i-bz��DRD:�disable�--free-is-write�due�to�implementation�difficulties<br>
78<br>
79(3.6.1:�16�February�2011,�vex�r2103,�valgrind�r11561).<br>
80<br>
81<br>
82<br>
83Release�3.6.0�(21�October�2010)<br>
84~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
853.6.0�is�a�feature�release�with�many�significant�improvements�and�the<br>
86usual�collection�of�bug�fixes.<br>
87<br>
88This�release�supports�X86/Linux,�AMD64/Linux,�ARM/Linux,�PPC32/Linux,<br>
89PPC64/Linux,�X86/Darwin�and�AMD64/Darwin.��Support�for�recent�distros<br>
90and�toolchain�components�(glibc�2.12,�gcc�4.5,�OSX�10.6)�has�been�added.<br>
91<br>
92��������������������-------------------------<br>
93<br>
94Here�are�some�highlights.��Details�are�shown�further�down:<br>
95<br>
96*�Support�for�ARM/Linux.<br>
97<br>
98*�Support�for�recent�Linux�distros:�Ubuntu�10.10�and�Fedora�14.<br>
99<br>
100*�Support�for�Mac�OS�X�10.6,�both�32-�and�64-bit�executables.<br>
101<br>
102*�Support�for�the�SSE4.2�instruction�set.<br>
103<br>
104*�Enhancements�to�the�Callgrind�profiler,�including�the�ability�to<br>
105��handle�CPUs�with�three�levels�of�cache.<br>
106<br>
107*�A�new�experimental�heap�profiler,�DHAT.<br>
108<br>
109*�A�huge�number�of�bug�fixes�and�small�enhancements.<br>
110<br>
111��������������������-------------------------<br>
112<br>
113Here�are�details�of�the�above�changes,�together�with�descriptions�of<br>
114many�other�changes,�and�a�list�of�fixed�bugs.<br>
115<br>
116*�==================�PLATFORM�CHANGES�=================<br>
117<br>
118*�Support�for�ARM/Linux.��Valgrind�now�runs�on�ARMv7�capable�CPUs<br>
119��running�Linux.��It�is�known�to�work�on�Ubuntu�10.04,�Ubuntu�10.10,<br>
120��and�Maemo�5,�so�you�can�run�Valgrind�on�your�Nokia�N900�if�you�want.<br>
121<br>
122��This�requires�a�CPU�capable�of�running�the�ARMv7-A�instruction�set<br>
123��(Cortex�A5,�A8�and�A9).��Valgrind�provides�fairly�complete�coverage<br>
124��of�the�user�space�instruction�set,�including�ARM�and�Thumb�integer<br>
125��code,�VFPv3,�NEON�and�V6�media�instructions.��The�Memcheck,<br>
126��Cachegrind�and�Massif�tools�work�properly;�other�tools�work�to<br>
127��varying�degrees.<br>
128<br>
129*�Support�for�recent�Linux�distros�(Ubuntu�10.10�and�Fedora�14),�along<br>
130��with�support�for�recent�releases�of�the�underlying�toolchain<br>
131��components,�notably�gcc-4.5�and�glibc-2.12.<br>
132<br>
133*�Support�for�Mac�OS�X�10.6,�both�32-�and�64-bit�executables.��64-bit<br>
134��support�also�works�much�better�on�OS�X�10.5,�and�is�as�solid�as<br>
135��32-bit�support�now.<br>
136<br>
137*�Support�for�the�SSE4.2�instruction�set.��SSE4.2�is�supported�in<br>
138��64-bit�mode.��In�32-bit�mode,�support�is�only�available�up�to�and<br>
139��including�SSSE3.��Some�exceptions:�SSE4.2�AES�instructions�are�not<br>
140��supported�in�64-bit�mode,�and�32-bit�mode�does�in�fact�support�the<br>
141��bare�minimum�SSE4�instructions�to�needed�to�run�programs�on�Mac�OS�X<br>
142��10.6�on�32-bit�targets.<br>
143<br>
144*�Support�for�IBM�POWER6�cpus�has�been�improved.��The�Power�ISA�up�to<br>
145��and�including�version�2.05�is�supported.<br>
146<br>
147*�====================�TOOL�CHANGES�====================<br>
148<br>
149*�Cachegrind�has�a�new�processing�script,�cg_diff,�which�finds�the<br>
150��difference�between�two�profiles.��It's�very�useful�for�evaluating<br>
151��the�performance�effects�of�a�change�in�a�program.<br>
152��<br>
153��Related�to�this�change,�the�meaning�of�cg_annotate's�(rarely-used)<br>
154��--threshold�option�has�changed;�this�is�unlikely�to�affect�many<br>
155��people,�if�you�do�use�it�please�see�the�user�manual�for�details.<br>
156<br>
157*�Callgrind�now�can�do�branch�prediction�simulation,�similar�to<br>
158��Cachegrind.��In�addition,�it�optionally�can�count�the�number�of<br>
159��executed�global�bus�events.��Both�can�be�used�for�a�better<br>
160��approximation�of�a�"Cycle�Estimation"�as�derived�event�(you�need�to<br>
161��update�the�event�formula�in�KCachegrind�yourself).<br>
162<br>
163*�Cachegrind�and�Callgrind�now�refer�to�the�LL�(last-level)�cache<br>
164��rather�than�the�L2�cache.��This�is�to�accommodate�machines�with<br>
165��three�levels�of�caches�--�if�Cachegrind/Callgrind�auto-detects�the<br>
166��cache�configuration�of�such�a�machine�it�will�run�the�simulation�as<br>
167��if�the�L2�cache�isn't�present.��This�means�the�results�are�less<br>
168��likely�to�match�the�true�result�for�the�machine,�but<br>
169��Cachegrind/Callgrind's�results�are�already�only�approximate,�and<br>
170��should�not�be�considered�authoritative.��The�results�are�still<br>
171��useful�for�giving�a�general�idea�about�a�program's�locality.<br>
172<br>
173*�Massif�has�a�new�option,�--pages-as-heap,�which�is�disabled�by<br>
174��default.��When�enabled,�instead�of�tracking�allocations�at�the�level<br>
175��of�heap�blocks�(as�allocated�with�malloc/new/new[]),�it�instead<br>
176��tracks�memory�allocations�at�the�level�of�memory�pages�(as�mapped�by<br>
177��mmap,�brk,�etc).��Each�mapped�page�is�treated�as�its�own�block.<br>
178��Interpreting�the�page-level�output�is�harder�than�the�heap-level<br>
179��output,�but�this�option�is�useful�if�you�want�to�account�for�every<br>
180��byte�of�memory�used�by�a�program.<br>
181<br>
182*�DRD�has�two�new�command-line�options:�--free-is-write�and<br>
183��--trace-alloc.��The�former�allows�to�detect�reading�from�already�freed<br>
184��memory,�and�the�latter�allows�tracing�of�all�memory�allocations�and<br>
185��deallocations.<br>
186<br>
187*�DRD�has�several�new�annotations.��Custom�barrier�implementations�can<br>
188��now�be�annotated,�as�well�as�benign�races�on�static�variables.<br>
189<br>
190*�DRD's�happens�before�/�happens�after�annotations�have�been�made�more<br>
191��powerful,�so�that�they�can�now�also�be�used�to�annotate�e.g.�a�smart<br>
192��pointer�implementation.<br>
193<br>
194*�Helgrind's�annotation�set�has�also�been�drastically�improved,�so�as<br>
195��to�provide�to�users�a�general�set�of�annotations�to�describe�locks,<br>
196��semaphores,�barriers�and�condition�variables.��Annotations�to<br>
197��describe�thread-safe�reference�counted�heap�objects�have�also�been<br>
198��added.<br>
199<br>
200*�Memcheck�has�a�new�command-line�option,�--show-possibly-lost,�which<br>
201��is�enabled�by�default.��When�disabled,�the�leak�detector�will�not<br>
202��show�possibly-lost�blocks.<br>
203<br>
204*�A�new�experimental�heap�profiler,�DHAT�(Dynamic�Heap�Analysis�Tool),<br>
205��has�been�added.��DHAT�keeps�track�of�allocated�heap�blocks,�and�also<br>
206��inspects�every�memory�reference�to�see�which�block�(if�any)�is�being<br>
207��accessed.��This�gives�a�lot�of�insight�into�block�lifetimes,<br>
208��utilisation,�turnover,�liveness,�and�the�location�of�hot�and�cold<br>
209��fields.��You�can�use�DHAT�to�do�hot-field�profiling.<br>
210<br>
211*�====================�OTHER�CHANGES�====================<br>
212<br>
213*�Improved�support�for�unfriendly�self-modifying�code:�the�extra<br>
214��overhead�incurred�by�--smc-check=all�has�been�reduced�by<br>
215��approximately�a�factor�of�5�as�compared�with�3.5.0.<br>
216<br>
217*�Ability�to�show�directory�names�for�source�files�in�error�messages.<br>
218��This�is�combined�with�a�flexible�mechanism�for�specifying�which<br>
219��parts�of�the�paths�should�be�shown.��This�is�enabled�by�the�new�flag<br>
220��--fullpath-after.<br>
221<br>
222*�A�new�flag,�--require-text-symbol,�which�will�stop�the�run�if�a<br>
223��specified�symbol�is�not�found�it�a�given�shared�object�when�it�is<br>
224��loaded�into�the�process.��This�makes�advanced�working�with�function<br>
225��intercepting�and�wrapping�safer�and�more�reliable.<br>
226<br>
227*�Improved�support�for�the�Valkyrie�GUI,�version�2.0.0.��GUI�output<br>
228��and�control�of�Valgrind�is�now�available�for�the�tools�Memcheck�and<br>
229��Helgrind.��XML�output�from�Valgrind�is�available�for�Memcheck,<br>
230��Helgrind�and�exp-Ptrcheck.<br>
231<br>
232*�More�reliable�stack�unwinding�on�amd64-linux,�particularly�in�the<br>
233��presence�of�function�wrappers,�and�with�gcc-4.5�compiled�code.<br>
234<br>
235*�Modest�scalability�(performance�improvements)�for�massive<br>
236��long-running�applications,�particularly�for�those�with�huge�amounts<br>
237��of�code.<br>
238<br>
239*�Support�for�analyzing�programs�running�under�Wine�with�has�been<br>
240��improved.��The�header�files�&lt;valgrind/valgrind.h&gt;,<br>
241��&lt;valgrind/memcheck.h&gt;�and�&lt;valgrind/drd.h&gt;�can�now�be�used�in<br>
242��Windows-programs�compiled�with�MinGW�or�one�of�the�Microsoft�Visual<br>
243��Studio�compilers.<br>
244<br>
245*�A�rare�but�serious�error�in�the�64-bit�x86�CPU�simulation�was�fixed.<br>
246��The�32-bit�simulator�was�not�affected.��This�did�not�occur�often,<br>
247��but�when�it�did�would�usually�crash�the�program�under�test.<br>
248��Bug�245925.<br>
249<br>
250*�A�large�number�of�bugs�were�fixed.��These�are�shown�below.<br>
251<br>
252*�A�number�of�bugs�were�investigated,�and�were�candidates�for�fixing,<br>
253��but�are�not�fixed�in�3.6.0,�due�to�lack�of�developer�time.��They�may<br>
254��get�fixed�in�later�releases.��They�are:<br>
255<br>
256��194402��vex�amd64-&gt;IR:�0x48�0xF�0xAE�0x4�0x24�0x49��(FXSAVE64)<br>
257��212419��false�positive�"lock�order�violated"�(A+B�vs�A)�<br>
258��213685��Undefined�value�propagates�past�dependency�breaking�instruction<br>
259��216837��Incorrect�instrumentation�of�NSOperationQueue�on�Darwin�<br>
260��237920��valgrind�segfault�on�fork�failure�<br>
261��242137��support�for�code�compiled�by�LLVM-2.8<br>
262��242423��Another�unknown�Intel�cache�config�value�<br>
263��243232��Inconsistent�Lock�Orderings�report�with�trylock�<br>
264��243483��ppc:�callgrind�triggers�VEX�assertion�failure�<br>
265��243935��Helgrind:�implementation�of�ANNOTATE_HAPPENS_BEFORE()�is�wrong<br>
266��244677��Helgrind�crash�hg_main.c:616�(map_threads_lookup):�Assertion<br>
267����������'thr'�failed.�<br>
268��246152��callgrind�internal�error�after�pthread_cancel�on�32�Bit�Linux�<br>
269��249435��Analyzing�wine�programs�with�callgrind�triggers�a�crash�<br>
270��250038��ppc64:�Altivec�lvsr�and�lvsl�instructions�fail�their�regtest<br>
271��250065��Handling�large�allocations�<br>
272��250101��huge�"free"�memory�usage�due�to�m_mallocfree.c<br>
273����������"superblocks�fragmentation"<br>
274��251569��vex�amd64-&gt;IR:�0xF�0x1�0xF9�0x8B�0x4C�0x24�(RDTSCP)<br>
275��252091��Callgrind�on�ARM�does�not�detect�function�returns�correctly<br>
276��252600��[PATCH]�Allow�lhs�to�be�a�pointer�for�shl/shr<br>
277��254420��memory�pool�tracking�broken<br>
278��n-i-bz��support�for�adding�symbols�for�JIT�generated�code<br>
279<br>
280<br>
281The�following�bugs�have�been�fixed�or�resolved.��Note�that�"n-i-bz"<br>
282stands�for�"not�in�bugzilla"�--�that�is,�a�bug�that�was�reported�to�us<br>
283but�never�got�a�bugzilla�entry.��We�encourage�you�to�file�bugs�in<br>
284bugzilla�(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than<br>
285mailing�the�developers�(or�mailing�lists)�directly�--�bugs�that�are<br>
286not�entered�into�bugzilla�tend�to�get�forgotten�about�or�ignored.<br>
287<br>
288To�see�details�of�a�given�bug,�visit<br>
289https://bugs.kde.org/show_bug.cgi?id=XXXXXX<br>
290where�XXXXXX�is�the�bug�number�as�listed�below.<br>
291<br>
292135264��dcbzl�instruction�missing<br>
293142688��==�250799<br>
294153699��Valgrind�should�report�unaligned�reads�with�movdqa<br>
295180217��==�212335<br>
296190429��Valgrind�reports�lost�of�errors�in�ld.so<br>
297��������with�x86_64�2.9.90�glibc�<br>
298197266��valgrind�appears�to�choke�on�the�xmms�instruction<br>
299��������"roundsd"�on�x86_64�<br>
300197988��Crash�when�demangling�very�large�symbol�names<br>
301202315��unhandled�syscall:�332�(inotify_init1)<br>
302203256��Add�page-level�profiling�to�Massif<br>
303205093��dsymutil=yes�needs�quotes,�locking�(partial�fix)<br>
304205241��Snow�Leopard�10.6�support�(partial�fix)<br>
305206600��Leak�checker�fails�to�upgrade�indirect�blocks�when�their<br>
306��������parent�becomes�reachable�<br>
307210935��port�valgrind.h�(not�valgrind)�to�win32�so�apps�run�under<br>
308��������wine�can�make�client�requests<br>
309211410��vex�amd64-&gt;IR:�0x15�0xFF�0xFF�0x0�0x0�0x89<br>
310��������within�Linux�ip-stack�checksum�functions�<br>
311212335��unhandled�instruction�bytes:�0xF3�0xF�0xBD�0xC0<br>
312��������(lzcnt�%eax,%eax)�<br>
313213685��Undefined�value�propagates�past�dependency�breaking�instruction<br>
314��������(partial�fix)<br>
315215914��Valgrind�inserts�bogus�empty�environment�variable�<br>
316217863��==�197988<br>
317219538��adjtimex�syscall�wrapper�wrong�in�readonly�adjtime�mode�<br>
318222545��shmat�fails�under�valgind�on�some�arm�targets�<br>
319222560��ARM�NEON�support�<br>
320230407��==�202315<br>
321231076��==�202315<br>
322232509��Docs�build�fails�with�formatting�inside�&lt;title&gt;&lt;/title&gt;�elements�<br>
323232793��==�202315<br>
324235642��[PATCH]�syswrap-linux.c:�support�evdev�EVIOCG*�ioctls�<br>
325236546��vex�x86-&gt;IR:�0x66�0xF�0x3A�0xA<br>
326237202��vex�amd64-&gt;IR:�0xF3�0xF�0xB8�0xC0�0x49�0x3B�<br>
327237371��better�support�for�VALGRIND_MALLOCLIKE_BLOCK�<br>
328237485��symlink�(syscall�57)�is�not�supported�on�Mac�OS�<br>
329237723��sysno�==�101�exp-ptrcheck:�the�'impossible'�happened:<br>
330��������unhandled�syscall�<br>
331238208��is_just_below_ESP�doesn't�take�into�account�red-zone�<br>
332238345��valgrind�passes�wrong�$0�when�executing�a�shell�script�<br>
333238679��mq_timedreceive�syscall�doesn't�flag�the�reception�buffer<br>
334��������as�"defined"<br>
335238696��fcntl�command�F_DUPFD_CLOEXEC�not�supported�<br>
336238713��unhandled�instruction�bytes:�0x66�0xF�0x29�0xC6�<br>
337238713��unhandled�instruction�bytes:�0x66�0xF�0x29�0xC6�<br>
338238745��3.5.0�Make�fails�on�PPC�Altivec�opcodes,�though�configure<br>
339��������says�"Altivec�off"<br>
340239992��vex�amd64-&gt;IR:�0x48�0xF�0xC4�0xC1�0x0�0x48�<br>
341240488��==�197988<br>
342240639��==�212335<br>
343241377��==�236546<br>
344241903��==�202315<br>
345241920��==�212335<br>
346242606��unhandled�syscall:�setegid�(in�Ptrcheck)<br>
347242814��Helgrind�"Impossible�has�happened"�during<br>
348��������QApplication::initInstance();�<br>
349243064��Valgrind�attempting�to�read�debug�information�from�iso�<br>
350243270��Make�stack�unwinding�in�Valgrind�wrappers�more�reliable<br>
351243884��exp-ptrcheck:�the�'impossible�happened:�unhandled�syscall�<br>
352��������sysno�=�277�(mq_open)<br>
353244009��exp-ptrcheck�unknown�syscalls�in�analyzing�lighttpd<br>
354244493��ARM�VFP�d16-d31�registers�support�<br>
355244670��add�support�for�audit_session_self�syscall�on�Mac�OS�10.6<br>
356244921��The�xml�report�of�helgrind�tool�is�not�well�format<br>
357244923��In�the�xml�report�file,�the�&lt;preamble&gt;�not�escape�the�<br>
358��������xml�char,�eg�'&lt;','&amp;','&gt;'<br>
359245535��print�full�path�names�in�plain�text�reports�<br>
360245925��x86-64�red�zone�handling�problem�<br>
361246258��Valgrind�not�catching�integer�underruns�+�new�[]�s<br>
362246311��reg/reg�cmpxchg�doesn't�work�on�amd64<br>
363246549��unhandled�syscall�unix:277�while�testing�32-bit�Darwin�app�<br>
364246888��Improve�Makefile.vex.am�<br>
365247510��[OS�X�10.6]�Memcheck�reports�unaddressable�bytes�passed�<br>
366��������to�[f]chmod_extended<br>
367247526��IBM�POWER6�(ISA�2.05)�support�is�incomplete<br>
368247561��Some�leak�testcases�fails�due�to�reachable�addresses�in<br>
369��������caller�save�regs<br>
370247875��sizeofIRType�to�handle�Ity_I128�<br>
371247894��[PATCH]�unhandled�syscall�sys_readahead�<br>
372247980��Doesn't�honor�CFLAGS�passed�to�configure�<br>
373248373��darwin10.supp�is�empty�in�the�trunk�<br>
374248822��Linux�FIBMAP�ioctl�has�int�parameter�instead�of�long<br>
375248893��[PATCH]�make�readdwarf.c�big�endianess�safe�to�enable<br>
376��������unwinding�on�big�endian�systems<br>
377249224��Syscall�336�not�supported�(SYS_proc_info)�<br>
378249359��==�245535<br>
379249775��Incorrect�scheme�for�detecting�NEON�capabilities�of�host�CPU<br>
380249943��jni�JVM�init�fails�when�using�valgrind<br>
381249991��Valgrind�incorrectly�declares�AESKEYGENASSIST�support<br>
382��������since�VEX�r2011<br>
383249996��linux/arm:�unhandled�syscall:�181�(__NR_pwrite64)<br>
384250799��frexp$fenv_access_off�function�generates�SIGILL�<br>
385250998��vex�x86-&gt;IR:�unhandled�instruction�bytes:�0x66�0x66�0x66�0x2E�<br>
386251251��support�pclmulqdq�insn�<br>
387251362��valgrind:�ARM:�attach�to�debugger�either�fails�or�provokes<br>
388��������kernel�oops�<br>
389251674��Unhandled�syscall�294<br>
390251818��==�254550<br>
391<br>
392254257��Add�support�for�debugfiles�found�by�build-id<br>
393254550��[PATCH]�Implement�DW_ATE_UTF�(DWARF4)<br>
394254646��Wrapped�functions�cause�stack�misalignment�on�OS�X<br>
395��������(and�possibly�Linux)<br>
396254556��ARM:�valgrinding�anything�fails�with�SIGSEGV�for�0xFFFF0FA0<br>
397<br>
398(3.6.0:�21�October�2010,�vex�r2068,�valgrind�r11471).<br>
399<br>
400<br>
401<br>
402Release�3.5.0�(19�August�2009)<br>
403~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
4043.5.0�is�a�feature�release�with�many�significant�improvements�and�the<br>
405usual�collection�of�bug�fixes.��The�main�improvement�is�that�Valgrind<br>
406now�works�on�Mac�OS�X.<br>
407<br>
408This�release�supports�X86/Linux,�AMD64/Linux,�PPC32/Linux,�PPC64/Linux<br>
409and�X86/Darwin.��Support�for�recent�distros�and�toolchain�components<br>
410(glibc�2.10,�gcc�4.5)�has�been�added.<br>
411<br>
412��������������������-------------------------<br>
413<br>
414Here�is�a�short�summary�of�the�changes.��Details�are�shown�further<br>
415down:<br>
416<br>
417*�Support�for�Mac�OS�X�(10.5.x).<br>
418<br>
419*�Improvements�and�simplifications�to�Memcheck's�leak�checker.<br>
420<br>
421*�Clarification�and�simplifications�in�various�aspects�of�Valgrind's<br>
422��text�output.<br>
423<br>
424*�XML�output�for�Helgrind�and�Ptrcheck.<br>
425<br>
426*�Performance�and�stability�improvements�for�Helgrind�and�DRD.<br>
427<br>
428*�Genuinely�atomic�support�for�x86/amd64/ppc�atomic�instructions.<br>
429<br>
430*�A�new�experimental�tool,�BBV,�useful�for�computer�architecture<br>
431��research.<br>
432<br>
433*�Improved�Wine�support,�including�ability�to�read�Windows�PDB<br>
434��debuginfo.<br>
435<br>
436��������������������-------------------------<br>
437<br>
438Here�are�details�of�the�above�changes,�followed�by�descriptions�of<br>
439many�other�minor�changes,�and�a�list�of�fixed�bugs.<br>
440<br>
441<br>
442*�Valgrind�now�runs�on�Mac�OS�X.��(Note�that�Mac�OS�X�is�sometimes<br>
443��called�"Darwin"�because�that�is�the�name�of�the�OS�core,�which�is�the<br>
444��level�that�Valgrind�works�at.)<br>
445<br>
446��Supported�systems:<br>
447<br>
448��-�It�requires�OS�10.5.x�(Leopard).��Porting�to�10.4.x�is�not�planned<br>
449����because�it�would�require�work�and�10.4�is�only�becoming�less�common.<br>
450<br>
451��-�32-bit�programs�on�x86�and�AMD64�(a.k.a�x86-64)�machines�are�supported<br>
452����fairly�well.��For�10.5.x,�32-bit�programs�are�the�default�even�on<br>
453����64-bit�machines,�so�it�handles�most�current�programs.<br>
454����<br>
455��-�64-bit�programs�on�x86�and�AMD64�(a.k.a�x86-64)�machines�are�not<br>
456����officially�supported,�but�simple�programs�at�least�will�probably�work.<br>
457����However,�start-up�is�slow.<br>
458<br>
459��-�PowerPC�machines�are�not�supported.<br>
460<br>
461��Things�that�don't�work:<br>
462<br>
463��-�The�Ptrcheck�tool.<br>
464<br>
465��-�Objective-C�garbage�collection.<br>
466<br>
467��-�--db-attach=yes.<br>
468<br>
469��-�If�you�have�Rogue�Amoeba's�"Instant�Hijack"�program�installed,<br>
470����Valgrind�will�fail�with�a�SIGTRAP�at�start-up.��See<br>
471����https://bugs.kde.org/show_bug.cgi?id=193917�for�details�and�a<br>
472����simple�work-around.<br>
473<br>
474��Usage�notes:<br>
475<br>
476��-�You�will�likely�find�--dsymutil=yes�a�useful�option,�as�error<br>
477����messages�may�be�imprecise�without�it.<br>
478<br>
479��-�Mac�OS�X�support�is�new�and�therefore�will�be�less�robust�than�the<br>
480����Linux�support.��Please�report�any�bugs�you�find.<br>
481<br>
482��-�Threaded�programs�may�run�more�slowly�than�on�Linux.<br>
483<br>
484��Many�thanks�to�Greg�Parker�for�developing�this�port�over�several�years.<br>
485<br>
486<br>
487*�Memcheck's�leak�checker�has�been�improved.��<br>
488<br>
489��-�The�results�for�--leak-check=summary�now�match�the�summary�results<br>
490����for�--leak-check=full.��Previously�they�could�differ�because<br>
491����--leak-check=summary�counted�"indirectly�lost"�blocks�and<br>
492����"suppressed"�blocks�as�"definitely�lost".<br>
493<br>
494��-�Blocks�that�are�only�reachable�via�at�least�one�interior-pointer,<br>
495����but�are�directly�pointed�to�by�a�start-pointer,�were�previously<br>
496����marked�as�"still�reachable".��They�are�now�correctly�marked�as<br>
497����"possibly�lost".<br>
498<br>
499��-�The�default�value�for�the�--leak-resolution�option�has�been<br>
500����changed�from�"low"�to�"high".��In�general,�this�means�that�more<br>
501����leak�reports�will�be�produced,�but�each�leak�report�will�describe<br>
502����fewer�leaked�blocks.<br>
503<br>
504��-�With�--leak-check=full,�"definitely�lost"�and�"possibly�lost"<br>
505����leaks�are�now�considered�as�proper�errors,�ie.�they�are�counted<br>
506����for�the�"ERROR�SUMMARY"�and�affect�the�behaviour�of<br>
507����--error-exitcode.��These�leaks�are�not�counted�as�errors�if<br>
508����--leak-check=summary�is�specified,�however.<br>
509<br>
510��-�Documentation�for�the�leak�checker�has�been�improved.<br>
511<br>
512<br>
513*�Various�aspects�of�Valgrind's�text�output�have�changed.<br>
514<br>
515��-�Valgrind's�start-up�message�has�changed.��It�is�shorter�but�also<br>
516����includes�the�command�being�run,�which�makes�it�easier�to�use<br>
517����--trace-children=yes.��An�example:<br>
518<br>
519��-�Valgrind's�shut-down�messages�have�also�changed.��This�is�most<br>
520����noticeable�with�Memcheck,�where�the�leak�summary�now�occurs�before<br>
521����the�error�summary.��This�change�was�necessary�to�allow�leaks�to�be<br>
522����counted�as�proper�errors�(see�the�description�of�the�leak�checker<br>
523����changes�above�for�more�details).��This�was�also�necessary�to�fix�a<br>
524����longstanding�bug�in�which�uses�of�suppressions�against�leaks�were<br>
525����not�"counted",�leading�to�difficulties�in�maintaining�suppression<br>
526����files�(see�https://bugs.kde.org/show_bug.cgi?id=186790).<br>
527<br>
528��-�Behavior�of�-v�has�changed.��In�previous�versions,�-v�printed�out<br>
529����a�mixture�of�marginally-user-useful�information,�and�tool/core<br>
530����statistics.��The�statistics�printing�has�now�been�moved�to�its�own<br>
531����flag,�--stats=yes.��This�means�-v�is�less�verbose�and�more�likely<br>
532����to�convey�useful�end-user�information.<br>
533<br>
534��-�The�format�of�some�(non-XML)�stack�trace�entries�has�changed�a<br>
535����little.��Previously�there�were�six�possible�forms:<br>
536<br>
537������0x80483BF:�really�(a.c:20)<br>
538������0x80483BF:�really�(in�/foo/a.out)<br>
539������0x80483BF:�really<br>
540������0x80483BF:�(within�/foo/a.out)<br>
541������0x80483BF:�???�(a.c:20)<br>
542������0x80483BF:�???<br>
543<br>
544����The�third�and�fourth�of�these�forms�have�been�made�more�consistent<br>
545����with�the�others.��The�six�possible�forms�are�now:<br>
546��<br>
547������0x80483BF:�really�(a.c:20)<br>
548������0x80483BF:�really�(in�/foo/a.out)<br>
549������0x80483BF:�really�(in�???)<br>
550������0x80483BF:�???�(in�/foo/a.out)<br>
551������0x80483BF:�???�(a.c:20)<br>
552������0x80483BF:�???<br>
553<br>
554����Stack�traces�produced�when�--xml=yes�is�specified�are�different<br>
555����and�unchanged.<br>
556<br>
557<br>
558*�Helgrind�and�Ptrcheck�now�support�XML�output,�so�they�can�be�used<br>
559��from�GUI�tools.��Also,�the�XML�output�mechanism�has�been<br>
560��overhauled.<br>
561<br>
562��-�The�XML�format�has�been�overhauled�and�generalised,�so�it�is�more<br>
563����suitable�for�error�reporting�tools�in�general.��The�Memcheck<br>
564����specific�aspects�of�it�have�been�removed.��The�new�format,�which<br>
565����is�an�evolution�of�the�old�format,�is�described�in<br>
566����docs/internals/xml-output-protocol4.txt.<br>
567<br>
568��-�Memcheck�has�been�updated�to�use�the�new�format.<br>
569<br>
570��-�Helgrind�and�Ptrcheck�are�now�able�to�emit�output�in�this�format.<br>
571<br>
572��-�The�XML�output�mechanism�has�been�overhauled.��XML�is�now�output<br>
573����to�its�own�file�descriptor,�which�means�that:<br>
574<br>
575����*�Valgrind�can�output�text�and�XML�independently.<br>
576<br>
577����*�The�longstanding�problem�of�XML�output�being�corrupted�by�<br>
578������unexpected�un-tagged�text�messages��is�solved.<br>
579<br>
580����As�before,�the�destination�for�text�output�is�specified�using<br>
581����--log-file=,�--log-fd=�or�--log-socket=.<br>
582<br>
583����As�before,�XML�output�for�a�tool�is�enabled�using�--xml=yes.<br>
584<br>
585����Because�there's�a�new�XML�output�channel,�the�XML�output<br>
586����destination�is�now�specified�by�--xml-file=,�--xml-fd=�or<br>
587����--xml-socket=.<br>
588<br>
589����Initial�feedback�has�shown�this�causes�some�confusion.��To<br>
590����clarify,�the�two�envisaged�usage�scenarios�are:<br>
591<br>
592����(1)�Normal�text�output.��In�this�case,�do�not�specify�--xml=yes<br>
593��������nor�any�of�--xml-file=,�--xml-fd=�or�--xml-socket=.<br>
594<br>
595����(2)�XML�output.��In�this�case,�specify�--xml=yes,�and�one�of<br>
596��������--xml-file=,�--xml-fd=�or�--xml-socket=�to�select�the�XML<br>
597��������destination,�one�of�--log-file=,�--log-fd=�or�--log-socket=<br>
598��������to�select�the�destination�for�any�remaining�text�messages,<br>
599��������and,�importantly,�-q.<br>
600<br>
601��������-q�makes�Valgrind�completely�silent�on�the�text�channel,<br>
602��������except�in�the�case�of�critical�failures,�such�as�Valgrind<br>
603��������itself�segfaulting,�or�failing�to�read�debugging�information.<br>
604��������Hence,�in�this�scenario,�it�suffices�to�check�whether�or�not<br>
605��������any�output�appeared�on�the�text�channel.��If�yes,�then�it�is<br>
606��������likely�to�be�a�critical�error�which�should�be�brought�to�the<br>
607��������attention�of�the�user.��If�no�(the�text�channel�produced�no<br>
608��������output)�then�it�can�be�assumed�that�the�run�was�successful.<br>
609<br>
610��������This�allows�GUIs�to�make�the�critical�distinction�they�need�to<br>
611��������make�(did�the�run�fail�or�not?)�without�having�to�search�or<br>
612��������filter�the�text�output�channel�in�any�way.<br>
613<br>
614����It�is�also�recommended�to�use�--child-silent-after-fork=yes�in<br>
615����scenario�(2).<br>
616<br>
617<br>
618*�Improvements�and�changes�in�Helgrind:<br>
619<br>
620��-�XML�output,�as�described�above<br>
621<br>
622��-�Checks�for�consistent�association�between�pthread�condition<br>
623����variables�and�their�associated�mutexes�are�now�performed.<br>
624<br>
625��-�pthread_spinlock�functions�are�supported.<br>
626<br>
627��-�Modest�performance�improvements.<br>
628<br>
629��-�Initial�(skeletal)�support�for�describing�the�behaviour�of<br>
630����non-POSIX�synchronisation�objects�through�ThreadSanitizer<br>
631����compatible�ANNOTATE_*�macros.<br>
632<br>
633��-�More�controllable�tradeoffs�between�performance�and�the�level�of<br>
634����detail�of�"previous"�accesses�in�a�race.��There�are�now�three<br>
635����settings:<br>
636<br>
637����*�--history-level=full.��This�is�the�default,�and�was�also�the<br>
638������default�in�3.4.x.��It�shows�both�stacks�involved�in�a�race,�but<br>
639������requires�a�lot�of�memory�and�can�be�very�slow�in�programs�that<br>
640������do�many�inter-thread�synchronisation�events.<br>
641<br>
642����*�--history-level=none.��This�only�shows�the�later�stack�involved<br>
643������in�a�race.��This�can�be�much�faster�than�--history-level=full,<br>
644������but�makes�it�much�more�difficult�to�find�the�other�access<br>
645������involved�in�the�race.<br>
646<br>
647����The�new�intermediate�setting�is<br>
648<br>
649����*�--history-level=approx<br>
650<br>
651������For�the�earlier�(other)�access,�two�stacks�are�presented.��The<br>
652������earlier�access�is�guaranteed�to�be�somewhere�in�between�the�two<br>
653������program�points�denoted�by�those�stacks.��This�is�not�as�useful<br>
654������as�showing�the�exact�stack�for�the�previous�access�(as�per<br>
655������--history-level=full),�but�it�is�better�than�nothing,�and�it's<br>
656������almost�as�fast�as�--history-level=none.<br>
657<br>
658<br>
659*�New�features�and�improvements�in�DRD:<br>
660<br>
661��-�The�error�messages�printed�by�DRD�are�now�easier�to�interpret.<br>
662����Instead�of�using�two�different�numbers�to�identify�each�thread<br>
663����(Valgrind�thread�ID�and�DRD�thread�ID),�DRD�does�now�identify<br>
664����threads�via�a�single�number�(the�DRD�thread�ID).��Furthermore<br>
665����"first�observed�at"�information�is�now�printed�for�all�error<br>
666����messages�related�to�synchronization�objects.<br>
667<br>
668��-�Added�support�for�named�semaphores�(sem_open()�and�sem_close()).<br>
669<br>
670��-�Race�conditions�between�pthread_barrier_wait()�and<br>
671����pthread_barrier_destroy()�calls�are�now�reported.<br>
672<br>
673��-�Added�support�for�custom�allocators�through�the�macros<br>
674����VALGRIND_MALLOCLIKE_BLOCK()�VALGRIND_FREELIKE_BLOCK()�(defined�in<br>
675����in�&lt;valgrind/valgrind.h&gt;).�An�alternative�for�these�two�macros�is<br>
676����the�new�client�request�VG_USERREQ__DRD_CLEAN_MEMORY�(defined�in<br>
677����&lt;valgrind/drd.h&gt;).<br>
678<br>
679��-�Added�support�for�annotating�non-POSIX�synchronization�objects<br>
680����through�several�new�ANNOTATE_*()�macros.<br>
681<br>
682��-�OpenMP:�added�support�for�the�OpenMP�runtime�(libgomp)�included<br>
683����with�gcc�versions�4.3.0�and�4.4.0.<br>
684<br>
685��-�Faster�operation.<br>
686<br>
687��-�Added�two�new�command-line�options�(--first-race-only�and<br>
688����--segment-merging-interval).<br>
689<br>
690<br>
691*�Genuinely�atomic�support�for�x86/amd64/ppc�atomic�instructions<br>
692<br>
693��Valgrind�will�now�preserve�(memory-access)�atomicity�of�LOCK-<br>
694��prefixed�x86/amd64�instructions,�and�any�others�implying�a�global<br>
695��bus�lock.��Ditto�for�PowerPC�l{w,d}arx/st{w,d}cx.�instructions.<br>
696<br>
697��This�means�that�Valgrinded�processes�will�"play�nicely"�in<br>
698��situations�where�communication�with�other�processes,�or�the�kernel,<br>
699��is�done�through�shared�memory�and�coordinated�with�such�atomic<br>
700��instructions.��Prior�to�this�change,�such�arrangements�usually<br>
701��resulted�in�hangs,�races�or�other�synchronisation�failures,�because<br>
702��Valgrind�did�not�honour�atomicity�of�such�instructions.<br>
703<br>
704<br>
705*�A�new�experimental�tool,�BBV,�has�been�added.��BBV�generates�basic<br>
706��block�vectors�for�use�with�the�SimPoint�analysis�tool,�which�allows<br>
707��a�program's�overall�behaviour�to�be�approximated�by�running�only�a<br>
708��fraction�of�it.��This�is�useful�for�computer�architecture<br>
709��researchers.��You�can�run�BBV�by�specifying�--tool=exp-bbv�(the<br>
710��"exp-"�prefix�is�short�for�"experimental").��BBV�was�written�by<br>
711��Vince�Weaver.<br>
712<br>
713<br>
714*�Modestly�improved�support�for�running�Windows�applications�under<br>
715��Wine.��In�particular,�initial�support�for�reading�Windows�.PDB�debug<br>
716��information�has�been�added.<br>
717<br>
718<br>
719*�A�new�Memcheck�client�request�VALGRIND_COUNT_LEAK_BLOCKS�has�been<br>
720��added.��It�is�similar�to�VALGRIND_COUNT_LEAKS�but�counts�blocks<br>
721��instead�of�bytes.<br>
722<br>
723<br>
724*�The�Valgrind�client�requests�VALGRIND_PRINTF�and<br>
725��VALGRIND_PRINTF_BACKTRACE�have�been�changed�slightly.��Previously,<br>
726��the�string�was�always�printed�immediately�on�its�own�line.��Now,�the<br>
727��string�will�be�added�to�a�buffer�but�not�printed�until�a�newline�is<br>
728��encountered,�or�other�Valgrind�output�is�printed�(note�that�for<br>
729��VALGRIND_PRINTF_BACKTRACE,�the�back-trace�itself�is�considered<br>
730��"other�Valgrind�output").��This�allows�you�to�use�multiple<br>
731��VALGRIND_PRINTF�calls�to�build�up�a�single�output�line,�and�also�to<br>
732��print�multiple�output�lines�with�a�single�request�(by�embedding<br>
733��multiple�newlines�in�the�string).<br>
734<br>
735<br>
736*�The�graphs�drawn�by�Massif's�ms_print�program�have�changed�slightly:<br>
737<br>
738��-�The�half-height�chars�'.'�and�','�are�no�longer�drawn,�because<br>
739����they�are�confusing.��The�--y�option�can�be�used�if�the�default<br>
740����y-resolution�is�not�high�enough.<br>
741<br>
742��-�Horizontal�lines�are�now�drawn�after�the�top�of�a�snapshot�if<br>
743����there�is�a�gap�until�the�next�snapshot.��This�makes�it�clear�that<br>
744����the�memory�usage�has�not�dropped�to�zero�between�snapshots.<br>
745<br>
746<br>
747*�Something�that�happened�in�3.4.0,�but�wasn't�clearly�announced:�the<br>
748��option�--read-var-info=yes�can�be�used�by�some�tools�(Memcheck,<br>
749��Helgrind�and�DRD).��When�enabled,�it�causes�Valgrind�to�read�DWARF3<br>
750��variable�type�and�location�information.��This�makes�those�tools<br>
751��start�up�more�slowly�and�increases�memory�consumption,�but<br>
752��descriptions�of�data�addresses�in�error�messages�become�more<br>
753��detailed.<br>
754<br>
755<br>
756*�exp-Omega,�an�experimental�instantaneous�leak-detecting�tool,�was<br>
757��disabled�in�3.4.0�due�to�a�lack�of�interest�and�maintenance,<br>
758��although�the�source�code�was�still�in�the�distribution.��The�source<br>
759��code�has�now�been�removed�from�the�distribution.��For�anyone<br>
760��interested,�the�removal�occurred�in�SVN�revision�r10247.<br>
761<br>
762<br>
763*�Some�changes�have�been�made�to�the�build�system.<br>
764<br>
765��-�VEX/�is�now�integrated�properly�into�the�build�system.��This�means<br>
766����that�dependency�tracking�within�VEX/�now�works�properly,�"make<br>
767����install"�will�work�without�requiring�"make"�before�it,�and<br>
768����parallel�builds�(ie.�'make�-j')�now�work�(previously�a<br>
769����.NOTPARALLEL�directive�was�used�to�serialize�builds,�ie.�'make�-j'<br>
770����was�effectively�ignored).<br>
771<br>
772��-�The�--with-vex�configure�option�has�been�removed.��It�was�of<br>
773����little�use�and�removing�it�simplified�the�build�system.<br>
774<br>
775��-�The�location�of�some�install�files�has�changed.��This�should�not<br>
776����affect�most�users.��Those�who�might�be�affected:<br>
777<br>
778����*�For�people�who�use�Valgrind�with�MPI�programs,�the�installed<br>
779������libmpiwrap.so�library�has�moved�from<br>
780������$(INSTALL)/&lt;platform&gt;/libmpiwrap.so�to<br>
781������$(INSTALL)/libmpiwrap-&lt;platform&gt;.so.<br>
782<br>
783����*�For�people�who�distribute�standalone�Valgrind�tools,�the<br>
784������installed�libraries�such�as�$(INSTALL)/&lt;platform&gt;/libcoregrind.a<br>
785������have�moved�to�$(INSTALL)/libcoregrind-&lt;platform&gt;.a.<br>
786<br>
787����These�changes�simplify�the�build�system.<br>
788<br>
789��-�Previously,�all�the�distributed�suppression�(*.supp)�files�were<br>
790����installed.��Now,�only�default.supp�is�installed.��This�should�not<br>
791����affect�users�as�the�other�installed�suppression�files�were�not<br>
792����read;�the�fact�that�they�were�installed�was�a�mistake.<br>
793<br>
794<br>
795*�KNOWN�LIMITATIONS:<br>
796<br>
797��-�Memcheck�is�unusable�with�the�Intel�compiler�suite�version�11.1,<br>
798����when�it�generates�code�for�SSE2-and-above�capable�targets.��This<br>
799����is�because�of�icc's�use�of�highly�optimised�inlined�strlen<br>
800����implementations.��It�causes�Memcheck�to�report�huge�numbers�of<br>
801����false�errors�even�in�simple�programs.��Helgrind�and�DRD�may�also<br>
802����have�problems.<br>
803<br>
804����Versions�11.0�and�earlier�may�be�OK,�but�this�has�not�been<br>
805����properly�tested.<br>
806<br>
807<br>
808The�following�bugs�have�been�fixed�or�resolved.��Note�that�"n-i-bz"<br>
809stands�for�"not�in�bugzilla"�--�that�is,�a�bug�that�was�reported�to�us<br>
810but�never�got�a�bugzilla�entry.��We�encourage�you�to�file�bugs�in<br>
811bugzilla�(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than<br>
812mailing�the�developers�(or�mailing�lists)�directly�--�bugs�that�are<br>
813not�entered�into�bugzilla�tend�to�get�forgotten�about�or�ignored.<br>
814<br>
815To�see�details�of�a�given�bug,�visit<br>
816https://bugs.kde.org/show_bug.cgi?id=XXXXXX<br>
817where�XXXXXX�is�the�bug�number�as�listed�below.<br>
818<br>
81984303���How�about�a�LockCheck�tool?�<br>
82091633���dereference�of�null�ptr�in�vgPlain_st_basetype�<br>
82197452���Valgrind�doesn't�report�any�pthreads�problems�<br>
822100628��leak-check�gets�assertion�failure�when�using�<br>
823��������VALGRIND_MALLOCLIKE_BLOCK�on�malloc()ed�memory�<br>
824108528��NPTL�pthread�cleanup�handlers�not�called�<br>
825110126��Valgrind�2.4.1�configure.in�tramples�CFLAGS�<br>
826110128��mallinfo�is�not�implemented...�<br>
827110770��VEX:�Generated�files�not�always�updated�when�making�valgrind<br>
828111102��Memcheck:�problems�with�large�(memory�footprint)�applications�<br>
829115673��Vex's�decoder�should�never�assert�<br>
830117564��False�positive:�Syscall�param�clone(child_tidptr)�contains<br>
831��������uninitialised�byte(s)�<br>
832119404��executing�ssh�from�inside�valgrind�fails�<br>
833133679��Callgrind�does�not�write�path�names�to�sources�with�dwarf�debug<br>
834��������info<br>
835135847��configure.in�problem�with�non�gnu�compilers�(and�possible�fix)�<br>
836136154��threads.c:273�(vgCallgrind_post_signal):�Assertion<br>
837��������'*(vgCallgrind_current_fn_stack.top)�==�0'�failed.�<br>
838136230��memcheck�reports�"possibly�lost",�should�be�"still�reachable"�<br>
839137073��NULL�arg�to�MALLOCLIKE_BLOCK�causes�crash�<br>
840137904��Valgrind�reports�a�memory�leak�when�using�POSIX�threads,<br>
841��������while�it�shouldn't�<br>
842139076��valgrind�VT_GETSTATE�error�<br>
843142228��complaint�of�elf_dynamic_do_rela�in�trivial�usage�<br>
844145347��spurious�warning�with�USBDEVFS_REAPURB�<br>
845148441��(wine)�can't�find�memory�leak�in�Wine,�win32�binary�<br>
846��������executable�file.<br>
847148742��Leak-check�fails�assert�on�exit�<br>
848149878��add�(proper)�check�for�calloc�integer�overflow�<br>
849150606��Call�graph�is�broken�when�using�callgrind�control�<br>
850152393��leak�errors�produce�an�exit�code�of�0.�I�need�some�way�to�<br>
851��������cause�leak�errors�to�result�in�a�nonzero�exit�code.�<br>
852157154��documentation�(leak-resolution�doc�speaks�about�num-callers<br>
853��������def=4)�+�what�is�a�loss�record<br>
854159501��incorrect�handling�of�ALSA�ioctls�<br>
855162020��Valgrinding�an�empty/zero-byte�file�crashes�valgrind�<br>
856162482��ppc:�Valgrind�crashes�while�reading�stabs�information�<br>
857162718��x86:�avoid�segment�selector�0�in�sys_set_thread_area()�<br>
858163253��(wine)�canonicaliseSymtab�forgot�some�fields�in�DiSym�<br>
859163560��VEX/test_main.c�is�missing�from�valgrind-3.3.1�<br>
860164353��malloc_usable_size()�doesn't�return�a�usable�size�<br>
861165468��Inconsistent�formatting�in�memcheck�manual�--�please�fix�<br>
862169505��main.c:286�(endOfInstr):<br>
863��������Assertion�'ii-&gt;cost_offset�==�*cost_offset'�failed�<br>
864177206��Generate�default.supp�during�compile�instead�of�configure<br>
865177209��Configure�valt_load_address�based�on�arch+os�<br>
866177305��eventfd�/�syscall�323�patch�lost<br>
867179731��Tests�fail�to�build�because�of�inlining�of�non-local�asm�labels<br>
868181394��helgrind:�libhb_core.c:3762�(msm_write):�Assertion�<br>
869��������'ordxx�==�POrd_EQ�||�ordxx�==�POrd_LT'�failed.�<br>
870181594��Bogus�warning�for�empty�text�segment�<br>
871181707��dwarf�doesn't�require�enumerations�to�have�name�<br>
872185038��exp-ptrcheck:�"unhandled�syscall:�285"�(fallocate)�on�x86_64�<br>
873185050��exp-ptrcheck:�sg_main.c:727�(add_block_to_GlobalTree):<br>
874��������Assertion�'!already_present'�failed.<br>
875185359��exp-ptrcheck:�unhandled�syscall�getresuid()<br>
876185794��"WARNING:�unhandled�syscall:�285"�(fallocate)�on�x86_64<br>
877185816��Valgrind�is�unable�to�handle�debug�info�for�files�with�split<br>
878��������debug�info�that�are�prelinked�afterwards�<br>
879185980��[darwin]�unhandled�syscall:�sem_open�<br>
880186238��bbToIR_AMD64:�disInstr�miscalculated�next�%rip<br>
881186507��exp-ptrcheck�unhandled�syscalls�prctl,�etc.�<br>
882186790��Suppression�pattern�used�for�leaks�are�not�reported�<br>
883186796��Symbols�with�length&gt;200�in�suppression�files�are�ignored�<br>
884187048��drd:�mutex�PTHREAD_PROCESS_SHARED�attribute�missinterpretation<br>
885187416��exp-ptrcheck:�support�for�__NR_{setregid,setreuid,setresuid}<br>
886188038��helgrind:�hg_main.c:926:�mk_SHVAL_fail:�the�'impossible'�happened<br>
887188046��bashisms�in�the�configure�script<br>
888188127��amd64-&gt;IR:�unhandled�instruction�bytes:�0xF0�0xF�0xB0�0xA<br>
889188161��memcheck:�--track-origins=yes�asserts�"mc_machine.c:672<br>
890��������(get_otrack_shadow_offset_wrk):�the�'impossible'�happened."<br>
891188248��helgrind:�pthread_cleanup_push,�pthread_rwlock_unlock,�<br>
892��������assertion�fail�"!lock-&gt;heldBy"�<br>
893188427��Add�support�for�epoll_create1�(with�patch)�<br>
894188530��Support�for�SIOCGSTAMPNS<br>
895188560��Include�valgrind.spec�in�the�tarball<br>
896188572��Valgrind�on�Mac�should�suppress�setenv()�mem�leak�<br>
897189054��Valgrind�fails�to�build�because�of�duplicate�non-local�asm�labels�<br>
898189737��vex�amd64-&gt;IR:�unhandled�instruction�bytes:�0xAC<br>
899189762��epoll_create�syscall�not�handled�(--tool=exp-ptrcheck)<br>
900189763��drd�assertion�failure:�s_threadinfo[tid].is_recording�<br>
901190219��unhandled�syscall:�328�(x86-linux)<br>
902190391��dup�of�181394;�see�above<br>
903190429��Valgrind�reports�lots�of�errors�in�ld.so�with�x86_64�2.9.90�glibc�<br>
904190820��No�debug�information�on�powerpc-linux<br>
905191095��PATCH:�Improve�usbdevfs�ioctl�handling�<br>
906191182��memcheck:�VALGRIND_LEAK_CHECK�quadratic�when�big�nr�of�chunks<br>
907��������or�big�nr�of�errors<br>
908191189��--xml=yes�should�obey�--gen-suppressions=all�<br>
909191192��syslog()�needs�a�suppression�on�macosx�<br>
910191271��DARWIN:�WARNING:�unhandled�syscall:�33554697�a.k.a.:�265�<br>
911191761��getrlimit�on�MacOSX�<br>
912191992��multiple�--fn-skip�only�works�sometimes;�dependent�on�order�<br>
913192634��V.�reports�"aspacem�sync_check_mapping_callback:�<br>
914��������segment�mismatch"�on�Darwin<br>
915192954��__extension__�missing�on�2�client�requests�<br>
916194429��Crash�at�start-up�with�glibc-2.10.1�and�linux-2.6.29�<br>
917194474��"INSTALL"�file�has�different�build�instructions�than�"README"<br>
918194671��Unhandled�syscall�(sem_wait?)�from�mac�valgrind�<br>
919195069��memcheck:�reports�leak�(memory�still�reachable)�for�<br>
920��������printf("%d',�x)�<br>
921195169��drd:�(vgDrd_barrier_post_wait):<br>
922��������Assertion�'r-&gt;sg[p-&gt;post_iteration]'�failed.�<br>
923195268��valgrind�--log-file�doesn't�accept�~/...<br>
924195838��VEX�abort:�LibVEX_N_SPILL_BYTES�too�small�for�CPUID�boilerplate�<br>
925195860��WARNING:�unhandled�syscall:�unix:223�<br>
926196528��need�a�error�suppression�for�pthread_rwlock_init�under�os�x?�<br>
927197227��Support�aio_*�syscalls�on�Darwin<br>
928197456��valgrind�should�reject�--suppressions=(directory)�<br>
929197512��DWARF2�CFI�reader:�unhandled�CFI�instruction�0:10�<br>
930197591��unhandled�syscall�27�(mincore)�<br>
931197793��Merge�DCAS�branch�to�the�trunk�==�85756,�142103<br>
932197794��Avoid�duplicate�filenames�in�Vex�<br>
933197898��make�check�fails�on�current�SVN�<br>
934197901��make�check�fails�also�under�exp-ptrcheck�in�current�SVN�<br>
935197929��Make�--leak-resolution=high�the�default�<br>
936197930��Reduce�spacing�between�leak�reports�<br>
937197933��Print�command�line�of�client�at�start-up,�and�shorten�preamble�<br>
938197966��unhandled�syscall�205�(x86-linux,�--tool=exp-ptrcheck)<br>
939198395��add�BBV�to�the�distribution�as�an�experimental�tool�<br>
940198624��Missing�syscalls�on�Darwin:�82,�167,�281,�347�<br>
941198649��callgrind_annotate�doesn't�cumulate�counters�<br>
942199338��callgrind_annotate�sorting/thresholds�are�broken�for�all�but�Ir�<br>
943199977��Valgrind�complains�about�an�unrecognized�instruction�in�the<br>
944��������atomic_incs�test�program<br>
945200029��valgrind�isn't�able�to�read�Fedora�12�debuginfo�<br>
946200760��darwin�unhandled�syscall:�unix:284�<br>
947200827��DRD�doesn't�work�on�Mac�OS�X�<br>
948200990��VG_(read_millisecond_timer)()�does�not�work�correctly�<br>
949201016��Valgrind�does�not�support�pthread_kill()�on�Mac�OS�<br>
950201169��Document�--read-var-info<br>
951201323��Pre-3.5.0�performance�sanity�checking�<br>
952201384��Review�user�manual�for�the�3.5.0�release�<br>
953201585��mfpvr�not�implemented�on�ppc�<br>
954201708��tests�failing�because�x86�direction�flag�is�left�set�<br>
955201757��Valgrind�doesn't�handle�any�recent�sys_futex�additions�<br>
956204377��64-bit�valgrind�can�not�start�a�shell�script<br>
957��������(with�#!/path/to/shell)�if�the�shell�is�a�32-bit�executable<br>
958n-i-bz��drd:�fixed�assertion�failure�triggered�by�mutex�reinitialization.<br>
959n-i-bz��drd:�fixed�a�bug�that�caused�incorrect�messages�to�be�printed<br>
960��������about�memory�allocation�events�with�memory�access�tracing�enabled<br>
961n-i-bz��drd:�fixed�a�memory�leak�triggered�by�vector�clock�deallocation<br>
962<br>
963(3.5.0:�19�Aug�2009,�vex�r1913,�valgrind�r10846).<br>
964<br>
965<br>
966<br>
967Release�3.4.1�(28�February�2009)<br>
968~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
9693.4.1�is�a�bug-fix�release�that�fixes�some�regressions�and�assertion<br>
970failures�in�debug�info�reading�in�3.4.0,�most�notably�incorrect�stack<br>
971traces�on�amd64-linux�on�older�(glibc-2.3�based)�systems.�Various<br>
972other�debug�info�problems�are�also�fixed.��A�number�of�bugs�in�the<br>
973exp-ptrcheck�tool�introduced�in�3.4.0�have�been�fixed.<br>
974<br>
975In�view�of�the�fact�that�3.4.0�contains�user-visible�regressions<br>
976relative�to�3.3.x,�upgrading�to�3.4.1�is�recommended.��Packagers�are<br>
977encouraged�to�ship�3.4.1�in�preference�to�3.4.0.<br>
978<br>
979The�fixed�bugs�are�as�follows.��Note�that�"n-i-bz"�stands�for�"not�in<br>
980bugzilla"�--�that�is,�a�bug�that�was�reported�to�us�but�never�got�a<br>
981bugzilla�entry.��We�encourage�you�to�file�bugs�in�bugzilla<br>
982(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than�mailing�the<br>
983developers�(or�mailing�lists)�directly�--�bugs�that�are�not�entered<br>
984into�bugzilla�tend�to�get�forgotten�about�or�ignored.<br>
985<br>
986n-i-bz��Fix�various�bugs�reading�icc-11�generated�debug�info<br>
987n-i-bz��Fix�various�bugs�reading�gcc-4.4�generated�debug�info<br>
988n-i-bz��Preliminary�support�for�glibc-2.10�/�Fedora�11<br>
989n-i-bz��Cachegrind�and�Callgrind:�handle�non-power-of-two�cache�sizes,<br>
990��������so�as�to�support�(eg)�24k�Atom�D1�and�Core2�with�3/6/12MB�L2.<br>
991179618��exp-ptrcheck�crashed�/�exit�prematurely<br>
992179624��helgrind:�false�positive�races�with�pthread_create�and<br>
993��������recv/open/close/read<br>
994134207��pkg-config�output�contains�@VG_PLATFORM@<br>
995176926��floating�point�exception�at�valgrind�startup�with�PPC�440EPX<br>
996181594��Bogus�warning�for�empty�text�segment<br>
997173751��amd64-&gt;IR:�0x48�0xF�0x6F�0x45�(even�more�redundant�rex�prefixes)<br>
998181707��Dwarf3�doesn't�require�enumerations�to�have�name<br>
999185038��exp-ptrcheck:�"unhandled�syscall:�285"�(fallocate)�on�x86_64<br>
1000185050��exp-ptrcheck:�sg_main.c:727�(add_block_to_GlobalTree):<br>
1001��������Assertion�'!already_present'�failed.<br>
1002185359��exp-ptrcheck�unhandled�syscall�getresuid()<br>
1003<br>
1004(3.4.1.RC1:��24�Feb�2008,�vex�r1884,�valgrind�r9253).<br>
1005(3.4.1:������28�Feb�2008,�vex�r1884,�valgrind�r9293).<br>
1006<br>
1007<br>
1008<br>
1009Release�3.4.0�(2�January�2009)<br>
1010~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
10113.4.0�is�a�feature�release�with�many�significant�improvements�and�the<br>
1012usual�collection�of�bug�fixes.��This�release�supports�X86/Linux,<br>
1013AMD64/Linux,�PPC32/Linux�and�PPC64/Linux.��Support�for�recent�distros<br>
1014(using�gcc�4.4,�glibc�2.8�and�2.9)�has�been�added.<br>
1015<br>
10163.4.0�brings�some�significant�tool�improvements.��Memcheck�can�now<br>
1017report�the�origin�of�uninitialised�values,�the�thread�checkers<br>
1018Helgrind�and�DRD�are�much�improved,�and�we�have�a�new�experimental<br>
1019tool,�exp-Ptrcheck,�which�is�able�to�detect�overruns�of�stack�and<br>
1020global�arrays.��In�detail:<br>
1021<br>
1022*�Memcheck�is�now�able�to�track�the�origin�of�uninitialised�values.<br>
1023��When�it�reports�an�uninitialised�value�error,�it�will�try�to�show<br>
1024��the�origin�of�the�value,�as�either�a�heap�or�stack�allocation.<br>
1025��Origin�tracking�is�expensive�and�so�is�not�enabled�by�default.��To<br>
1026��use�it,�specify�--track-origins=yes.��Memcheck's�speed�will�be<br>
1027��essentially�halved,�and�memory�usage�will�be�significantly<br>
1028��increased.��Nevertheless�it�can�drastically�reduce�the�effort<br>
1029��required�to�identify�the�root�cause�of�uninitialised�value�errors,<br>
1030��and�so�is�often�a�programmer�productivity�win,�despite�running�more<br>
1031��slowly.<br>
1032<br>
1033*�A�version�(1.4.0)�of�the�Valkyrie�GUI,�that�works�with�Memcheck�in<br>
1034��3.4.0,�will�be�released�shortly.<br>
1035<br>
1036*�Helgrind's�race�detection�algorithm�has�been�completely�redesigned<br>
1037��and�reimplemented,�to�address�usability�and�scalability�concerns:<br>
1038<br>
1039��-�The�new�algorithm�has�a�lower�false-error�rate:�it�is�much�less<br>
1040����likely�to�report�races�that�do�not�really�exist.<br>
1041<br>
1042��-�Helgrind�will�display�full�call�stacks�for�both�accesses�involved<br>
1043����in�a�race.��This�makes�it�easier�to�identify�the�root�causes�of<br>
1044����races.<br>
1045<br>
1046��-�Limitations�on�the�size�of�program�that�can�run�have�been�removed.<br>
1047<br>
1048��-�Performance�has�been�modestly�improved,�although�that�is�very<br>
1049����workload-dependent.<br>
1050<br>
1051��-�Direct�support�for�Qt4�threading�has�been�added.<br>
1052<br>
1053��-�pthread_barriers�are�now�directly�supported.<br>
1054<br>
1055��-�Helgrind�works�well�on�all�supported�Linux�targets.<br>
1056<br>
1057*�The�DRD�thread�debugging�tool�has�seen�major�improvements:<br>
1058<br>
1059��-�Greatly�improved�performance�and�significantly�reduced�memory<br>
1060����usage.<br>
1061<br>
1062��-�Support�for�several�major�threading�libraries�(Boost.Thread,�Qt4,<br>
1063����glib,�OpenMP)�has�been�added.<br>
1064<br>
1065��-�Support�for�atomic�instructions,�POSIX�semaphores,�barriers�and<br>
1066����reader-writer�locks�has�been�added.<br>
1067<br>
1068��-�Works�now�on�PowerPC�CPUs�too.<br>
1069<br>
1070��-�Added�support�for�printing�thread�stack�usage�at�thread�exit�time.<br>
1071<br>
1072��-�Added�support�for�debugging�lock�contention.<br>
1073<br>
1074��-�Added�a�manual�for�Drd.<br>
1075<br>
1076*�A�new�experimental�tool,�exp-Ptrcheck,�has�been�added.��Ptrcheck<br>
1077��checks�for�misuses�of�pointers.��In�that�sense�it�is�a�bit�like<br>
1078��Memcheck.��However,�Ptrcheck�can�do�things�Memcheck�can't:�it�can<br>
1079��detect�overruns�of�stack�and�global�arrays,�it�can�detect<br>
1080��arbitrarily�far�out-of-bounds�accesses�to�heap�blocks,�and�it�can<br>
1081��detect�accesses�heap�blocks�that�have�been�freed�a�very�long�time<br>
1082��ago�(millions�of�blocks�in�the�past).<br>
1083<br>
1084��Ptrcheck�currently�works�only�on�x86-linux�and�amd64-linux.��To�use<br>
1085��it,�use�--tool=exp-ptrcheck.��A�simple�manual�is�provided,�as�part<br>
1086��of�the�main�Valgrind�documentation.��As�this�is�an�experimental<br>
1087��tool,�we�would�be�particularly�interested�in�hearing�about�your<br>
1088��experiences�with�it.<br>
1089<br>
1090*�exp-Omega,�an�experimental�instantaneous�leak-detecting�tool,�is�no<br>
1091��longer�built�by�default,�although�the�code�remains�in�the�repository<br>
1092��and�the�tarball.��This�is�due�to�three�factors:�a�perceived�lack�of<br>
1093��users,�a�lack�of�maintenance,�and�concerns�that�it�may�not�be<br>
1094��possible�to�achieve�reliable�operation�using�the�existing�design.<br>
1095<br>
1096*�As�usual,�support�for�the�latest�Linux�distros�and�toolchain<br>
1097��components�has�been�added.��It�should�work�well�on�Fedora�Core�10,<br>
1098��OpenSUSE�11.1�and�Ubuntu�8.10.��gcc-4.4�(in�its�current�pre-release<br>
1099��state)�is�supported,�as�is�glibc-2.9.��The�C++�demangler�has�been<br>
1100��updated�so�as�to�work�well�with�C++�compiled�by�even�the�most�recent<br>
1101��g++'s.<br>
1102<br>
1103*�You�can�now�use�frame-level�wildcards�in�suppressions.��This�was�a<br>
1104��frequently-requested�enhancement.��A�line�"..."�in�a�suppression�now<br>
1105��matches�zero�or�more�frames.��This�makes�it�easier�to�write<br>
1106��suppressions�which�are�precise�yet�insensitive�to�changes�in<br>
1107��inlining�behaviour.<br>
1108<br>
1109*�3.4.0�adds�support�on�x86/amd64�for�the�SSSE3�instruction�set.<br>
1110<br>
1111*�Very�basic�support�for�IBM�Power6�has�been�added�(64-bit�processes�only).<br>
1112<br>
1113*�Valgrind�is�now�cross-compilable.��For�example,�it�is�possible�to<br>
1114��cross�compile�Valgrind�on�an�x86/amd64-linux�host,�so�that�it�runs<br>
1115��on�a�ppc32/64-linux�target.<br>
1116<br>
1117*�You�can�set�the�main�thread's�stack�size�at�startup�using�the<br>
1118��new�--main-stacksize=�flag�(subject�of�course�to�ulimit�settings).<br>
1119��This�is�useful�for�running�apps�that�need�a�lot�of�stack�space.<br>
1120<br>
1121*�The�limitation�that�you�can't�use�--trace-children=yes�together<br>
1122��with�--db-attach=yes�has�been�removed.<br>
1123<br>
1124*�The�following�bugs�have�been�fixed.��Note�that�"n-i-bz"�stands�for<br>
1125��"not�in�bugzilla"�--�that�is,�a�bug�that�was�reported�to�us�but<br>
1126��never�got�a�bugzilla�entry.��We�encourage�you�to�file�bugs�in<br>
1127��bugzilla�(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than<br>
1128��mailing�the�developers�(or�mailing�lists)�directly.<br>
1129<br>
1130��n-i-bz��Make�return�types�for�some�client�requests�64-bit�clean<br>
1131��n-i-bz��glibc�2.9�support<br>
1132��n-i-bz��ignore�unsafe�.valgrindrc's�(CVE-2008-4865)<br>
1133��n-i-bz��MPI_Init(0,0)�is�valid�but�libmpiwrap.c�segfaults<br>
1134��n-i-bz��Building�in�an�env�without�gdb�gives�bogus�gdb�attach<br>
1135��92456���Tracing�the�origin�of�uninitialised�memory<br>
1136��106497��Valgrind�does�not�demangle�some�C++�template�symbols<br>
1137��162222��==106497<br>
1138��151612��Suppression�with�"..."�(frame-level�wildcards�in�.supp�files)<br>
1139��156404��Unable�to�start�oocalc�under�memcheck�on�openSUSE�10.3�(64-bit)<br>
1140��159285��unhandled�syscall:25�(stime,�on�x86-linux)<br>
1141��159452��unhandled�ioctl�0x8B01�on�"valgrind�iwconfig"<br>
1142��160954��ppc�build�of�valgrind�crashes�with�illegal�instruction�(isel)<br>
1143��160956��mallinfo�implementation,�w/�patch<br>
1144��162092��Valgrind�fails�to�start�gnome-system-monitor<br>
1145��162819��malloc_free_fill�test�doesn't�pass�on�glibc2.8�x86<br>
1146��163794��assertion�failure�with�"--track-origins=yes"<br>
1147��163933��sigcontext.err�and�.trapno�must�be�set�together<br>
1148��163955��remove�constraint�!(--db-attach=yes�&amp;&amp;�--trace-children=yes)<br>
1149��164476��Missing�kernel�module�loading�system�calls<br>
1150��164669��SVN�regression:�mmap()�drops�posix�file�locks<br>
1151��166581��Callgrind�output�corruption�when�program�forks<br>
1152��167288��Patch�file�for�missing�system�calls�on�Cell�BE<br>
1153��168943��unsupported�scas�instruction�pentium<br>
1154��171645��Unrecognised�instruction�(MOVSD,�non-binutils�encoding)<br>
1155��172417��x86-&gt;IR:�0x82�...<br>
1156��172563��amd64-&gt;IR:�0xD9�0xF5��-��fprem1<br>
1157��173099��.lds�linker�script�generation�error<br>
1158��173177��[x86_64]�syscalls:�125/126/179�(capget/capset/quotactl)<br>
1159��173751��amd64-&gt;IR:�0x48�0xF�0x6F�0x45�(even�more�redundant�prefixes)<br>
1160��174532��==�173751<br>
1161��174908��--log-file�value�not�expanded�correctly�for�core�file<br>
1162��175044��Add�lookup_dcookie�for�amd64<br>
1163��175150��x86-&gt;IR:�0xF2�0xF�0x11�0xC1�(movss�non-binutils�encoding)<br>
1164<br>
1165Developer-visible�changes:<br>
1166<br>
1167*�Valgrind's�debug-info�reading�machinery�has�been�majorly�overhauled.<br>
1168��It�can�now�correctly�establish�the�addresses�for�ELF�data�symbols,<br>
1169��which�is�something�that�has�never�worked�properly�before�now.<br>
1170<br>
1171��Also,�Valgrind�can�now�read�DWARF3�type�and�location�information�for<br>
1172��stack�and�global�variables.��This�makes�it�possible�to�use�the<br>
1173��framework�to�build�tools�that�rely�on�knowing�the�type�and�locations<br>
1174��of�stack�and�global�variables,�for�example�exp-Ptrcheck.<br>
1175<br>
1176��Reading�of�such�information�is�disabled�by�default,�because�most<br>
1177��tools�don't�need�it,�and�because�it�is�expensive�in�space�and�time.<br>
1178��However,�you�can�force�Valgrind�to�read�it,�using�the<br>
1179��--read-var-info=yes�flag.��Memcheck,�Helgrind�and�DRD�are�able�to<br>
1180��make�use�of�such�information,�if�present,�to�provide�source-level<br>
1181��descriptions�of�data�addresses�in�the�error�messages�they�create.<br>
1182<br>
1183(3.4.0.RC1:��24�Dec�2008,�vex�r1878,�valgrind�r8882).<br>
1184(3.4.0:�������3�Jan�2009,�vex�r1878,�valgrind�r8899).<br>
1185<br>
1186<br>
1187<br>
1188Release�3.3.1�(4�June�2008)<br>
1189~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
11903.3.1�fixes�a�bunch�of�bugs�in�3.3.0,�adds�support�for�glibc-2.8�based<br>
1191systems�(openSUSE�11,�Fedora�Core�9),�improves�the�existing�glibc-2.7<br>
1192support,�and�adds�support�for�the�SSSE3�(Core�2)�instruction�set.<br>
1193<br>
11943.3.1�will�likely�be�the�last�release�that�supports�some�very�old<br>
1195systems.��In�particular,�the�next�major�release,�3.4.0,�will�drop<br>
1196support�for�the�old�LinuxThreads�threading�library,�and�for�gcc<br>
1197versions�prior�to�3.0.<br>
1198<br>
1199The�fixed�bugs�are�as�follows.��Note�that�"n-i-bz"�stands�for�"not�in<br>
1200bugzilla"�--�that�is,�a�bug�that�was�reported�to�us�but�never�got�a<br>
1201bugzilla�entry.��We�encourage�you�to�file�bugs�in�bugzilla<br>
1202(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than�mailing�the<br>
1203developers�(or�mailing�lists)�directly�--�bugs�that�are�not�entered<br>
1204into�bugzilla�tend�to�get�forgotten�about�or�ignored.<br>
1205<br>
1206n-i-bz��Massif�segfaults�at�exit<br>
1207n-i-bz��Memcheck�asserts�on�Altivec�code<br>
1208n-i-bz��fix�sizeof�bug�in�Helgrind<br>
1209n-i-bz��check�fd�on�sys_llseek<br>
1210n-i-bz��update�syscall�lists�to�kernel�2.6.23.1<br>
1211n-i-bz��support�sys_sync_file_range<br>
1212n-i-bz��handle�sys_sysinfo,�sys_getresuid,�sys_getresgid�on�ppc64-linux<br>
1213n-i-bz��intercept�memcpy�in�64-bit�ld.so's<br>
1214n-i-bz��Fix�wrappers�for�sys_{futimesat,utimensat}<br>
1215n-i-bz��Minor�false-error�avoidance�fixes�for�Memcheck<br>
1216n-i-bz��libmpiwrap.c:�add�a�wrapper�for�MPI_Waitany<br>
1217n-i-bz��helgrind�support�for�glibc-2.8<br>
1218n-i-bz��partial�fix�for�mc_leakcheck.c:698�assert:<br>
1219��������'lc_shadows[i]-&gt;data�+�lc_shadows[i]�...<br>
1220n-i-bz��Massif/Cachegrind�output�corruption�when�programs�fork<br>
1221n-i-bz��register�allocator�fix:�handle�spill�stores�correctly<br>
1222n-i-bz��add�support�for�PA6T�PowerPC�CPUs<br>
1223126389��vex�x86-&gt;IR:�0xF�0xAE�(FXRSTOR)<br>
1224158525��==126389<br>
1225152818��vex�x86-&gt;IR:�0xF3�0xAC�(repz�lodsb)�<br>
1226153196��vex�x86-&gt;IR:�0xF2�0xA6�(repnz�cmpsb)�<br>
1227155011��vex�x86-&gt;IR:�0xCF�(iret)<br>
1228155091��Warning�[...]�unhandled�DW_OP_�opcode�0x23<br>
1229156960��==155901<br>
1230155528��support�Core2/SSSE3�insns�on�x86/amd64<br>
1231155929��ms_print�fails�on�massif�outputs�containing�long�lines<br>
1232157665��valgrind�fails�on�shmdt(0)�after�shmat�to�0<br>
1233157748��support�x86�PUSHFW/POPFW<br>
1234158212��helgrind:�handle�pthread_rwlock_try{rd,wr}lock.<br>
1235158425��sys_poll�incorrectly�emulated�when�RES==0<br>
1236158744��vex�amd64-&gt;IR:�0xF0�0x41�0xF�0xC0�(xaddb)<br>
1237160907��Support�for�a�couple�of�recent�Linux�syscalls<br>
1238161285��Patch�--�support�for�eventfd()�syscall<br>
1239161378��illegal�opcode�in�debug�libm�(FUCOMPP)<br>
1240160136��==161378<br>
1241161487��number�of�suppressions�files�is�limited�to�10<br>
1242162386��ms_print�typo�in�milliseconds�time�unit�for�massif<br>
1243161036��exp-drd:�client�allocated�memory�was�never�freed<br>
1244162663��signalfd_wrapper�fails�on�64bit�linux<br>
1245<br>
1246(3.3.1.RC1:��2�June�2008,�vex�r1854,�valgrind�r8169).<br>
1247(3.3.1:������4�June�2008,�vex�r1854,�valgrind�r8180).<br>
1248<br>
1249<br>
1250<br>
1251Release�3.3.0�(7�December�2007)<br>
1252~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
12533.3.0�is�a�feature�release�with�many�significant�improvements�and�the<br>
1254usual�collection�of�bug�fixes.��This�release�supports�X86/Linux,<br>
1255AMD64/Linux,�PPC32/Linux�and�PPC64/Linux.��Support�for�recent�distros<br>
1256(using�gcc�4.3,�glibc�2.6�and�2.7)�has�been�added.<br>
1257<br>
1258The�main�excitement�in�3.3.0�is�new�and�improved�tools.��Helgrind<br>
1259works�again,�Massif�has�been�completely�overhauled�and�much�improved,<br>
1260Cachegrind�now�does�branch-misprediction�profiling,�and�a�new�category<br>
1261of�experimental�tools�has�been�created,�containing�two�new�tools:<br>
1262Omega�and�DRD.��There�are�many�other�smaller�improvements.��In�detail:<br>
1263<br>
1264-�Helgrind�has�been�completely�overhauled�and�works�for�the�first�time<br>
1265��since�Valgrind�2.2.0.��Supported�functionality�is:�detection�of<br>
1266��misuses�of�the�POSIX�PThreads�API,�detection�of�potential�deadlocks<br>
1267��resulting�from�cyclic�lock�dependencies,�and�detection�of�data<br>
1268��races.��Compared�to�the�2.2.0�Helgrind,�the�race�detection�algorithm<br>
1269��has�some�significant�improvements�aimed�at�reducing�the�false�error<br>
1270��rate.��Handling�of�various�kinds�of�corner�cases�has�been�improved.<br>
1271��Efforts�have�been�made�to�make�the�error�messages�easier�to<br>
1272��understand.��Extensive�documentation�is�provided.<br>
1273<br>
1274-�Massif�has�been�completely�overhauled.��Instead�of�measuring<br>
1275��space-time�usage�--�which�wasn't�always�useful�and�many�people�found<br>
1276��confusing�--�it�now�measures�space�usage�at�various�points�in�the<br>
1277��execution,�including�the�point�of�peak�memory�allocation.��Its<br>
1278��output�format�has�also�changed:�instead�of�producing�PostScript<br>
1279��graphs�and�HTML�text,�it�produces�a�single�text�output�(via�the�new<br>
1280��'ms_print'�script)�that�contains�both�a�graph�and�the�old�textual<br>
1281��information,�but�in�a�more�compact�and�readable�form.��Finally,�the<br>
1282��new�version�should�be�more�reliable�than�the�old�one,�as�it�has�been<br>
1283��tested�more�thoroughly.<br>
1284<br>
1285-�Cachegrind�has�been�extended�to�do�branch-misprediction�profiling.<br>
1286��Both�conditional�and�indirect�branches�are�profiled.��The�default<br>
1287��behaviour�of�Cachegrind�is�unchanged.��To�use�the�new�functionality,<br>
1288��give�the�option�--branch-sim=yes.<br>
1289<br>
1290-�A�new�category�of�"experimental�tools"�has�been�created.��Such�tools<br>
1291��may�not�work�as�well�as�the�standard�tools,�but�are�included�because<br>
1292��some�people�will�find�them�useful,�and�because�exposure�to�a�wider<br>
1293��user�group�provides�tool�authors�with�more�end-user�feedback.��These<br>
1294��tools�have�a�"exp-"�prefix�attached�to�their�names�to�indicate�their<br>
1295��experimental�nature.��Currently�there�are�two�experimental�tools:<br>
1296<br>
1297��*�exp-Omega:�an�instantaneous�leak�detector.��See<br>
1298����exp-omega/docs/omega_introduction.txt.<br>
1299<br>
1300��*�exp-DRD:�a�data�race�detector�based�on�the�happens-before<br>
1301����relation.��See�exp-drd/docs/README.txt.<br>
1302<br>
1303-�Scalability�improvements�for�very�large�programs,�particularly�those<br>
1304��which�have�a�million�or�more�malloc'd�blocks�in�use�at�once.��These<br>
1305��improvements�mostly�affect�Memcheck.��Memcheck�is�also�up�to�10%<br>
1306��faster�for�all�programs,�with�x86-linux�seeing�the�largest<br>
1307��improvement.<br>
1308<br>
1309-�Works�well�on�the�latest�Linux�distros.��Has�been�tested�on�Fedora<br>
1310��Core�8�(x86,�amd64,�ppc32,�ppc64)�and�openSUSE�10.3.��glibc�2.6�and<br>
1311��2.7�are�supported.��gcc-4.3�(in�its�current�pre-release�state)�is<br>
1312��supported.��At�the�same�time,�3.3.0�retains�support�for�older<br>
1313��distros.<br>
1314<br>
1315-�The�documentation�has�been�modestly�reorganised�with�the�aim�of<br>
1316��making�it�easier�to�find�information�on�common-usage�scenarios.<br>
1317��Some�advanced�material�has�been�moved�into�a�new�chapter�in�the�main<br>
1318��manual,�so�as�to�unclutter�the�main�flow,�and�other�tidying�up�has<br>
1319��been�done.<br>
1320<br>
1321-�There�is�experimental�support�for�AIX�5.3,�both�32-bit�and�64-bit<br>
1322��processes.��You�need�to�be�running�a�64-bit�kernel�to�use�Valgrind<br>
1323��on�a�64-bit�executable.<br>
1324<br>
1325-�There�have�been�some�changes�to�command�line�options,�which�may<br>
1326��affect�you:<br>
1327<br>
1328��*�--log-file-exactly�and�<br>
1329����--log-file-qualifier�options�have�been�removed.<br>
1330<br>
1331����To�make�up�for�this�--log-file�option�has�been�made�more�powerful.<br>
1332����It�now�accepts�a�%p�format�specifier,�which�is�replaced�with�the<br>
1333����process�ID,�and�a�%q{FOO}�format�specifier,�which�is�replaced�with<br>
1334����the�contents�of�the�environment�variable�FOO.<br>
1335<br>
1336��*�--child-silent-after-fork=yes|no�[no]<br>
1337<br>
1338����Causes�Valgrind�to�not�show�any�debugging�or�logging�output�for<br>
1339����the�child�process�resulting�from�a�fork()�call.��This�can�make�the<br>
1340����output�less�confusing�(although�more�misleading)�when�dealing�with<br>
1341����processes�that�create�children.<br>
1342<br>
1343��*�--cachegrind-out-file,�--callgrind-out-file�and�--massif-out-file<br>
1344<br>
1345����These�control�the�names�of�the�output�files�produced�by<br>
1346����Cachegrind,�Callgrind�and�Massif.��They�accept�the�same�%p�and�%q<br>
1347����format�specifiers�that�--log-file�accepts.��--callgrind-out-file<br>
1348����replaces�Callgrind's�old�--base�option.<br>
1349<br>
1350��*�Cachegrind's�'cg_annotate'�script�no�longer�uses�the�--&lt;pid&gt;<br>
1351����option�to�specify�the�output�file.��Instead,�the�first�non-option<br>
1352����argument�is�taken�to�be�the�name�of�the�output�file,�and�any<br>
1353����subsequent�non-option�arguments�are�taken�to�be�the�names�of<br>
1354����source�files�to�be�annotated.<br>
1355<br>
1356��*�Cachegrind�and�Callgrind�now�use�directory�names�where�possible�in<br>
1357����their�output�files.��This�means�that�the�-I�option�to<br>
1358����'cg_annotate'�and�'callgrind_annotate'�should�not�be�needed�in<br>
1359����most�cases.��It�also�means�they�can�correctly�handle�the�case<br>
1360����where�two�source�files�in�different�directories�have�the�same<br>
1361����name.<br>
1362<br>
1363-�Memcheck�offers�a�new�suppression�kind:�"Jump".��This�is�for<br>
1364��suppressing�jump-to-invalid-address�errors.��Previously�you�had�to<br>
1365��use�an�"Addr1"�suppression,�which�didn't�make�much�sense.<br>
1366<br>
1367-�Memcheck�has�new�flags�--malloc-fill=&lt;hexnum&gt;�and<br>
1368��--free-fill=&lt;hexnum&gt;�which�free�malloc'd�/�free'd�areas�with�the<br>
1369��specified�byte.��This�can�help�shake�out�obscure�memory�corruption<br>
1370��problems.��The�definedness�and�addressability�of�these�areas�is<br>
1371��unchanged�--�only�the�contents�are�affected.<br>
1372<br>
1373-�The�behaviour�of�Memcheck's�client�requests�VALGRIND_GET_VBITS�and<br>
1374��VALGRIND_SET_VBITS�have�changed�slightly.��They�no�longer�issue<br>
1375��addressability�errors�--�if�either�array�is�partially�unaddressable,<br>
1376��they�just�return�3�(as�before).��Also,�SET_VBITS�doesn't�report<br>
1377��definedness�errors�if�any�of�the�V�bits�are�undefined.<br>
1378<br>
1379-�The�following�Memcheck�client�requests�have�been�removed:<br>
1380����VALGRIND_MAKE_NOACCESS<br>
1381����VALGRIND_MAKE_WRITABLE<br>
1382����VALGRIND_MAKE_READABLE<br>
1383����VALGRIND_CHECK_WRITABLE<br>
1384����VALGRIND_CHECK_READABLE<br>
1385����VALGRIND_CHECK_DEFINED<br>
1386��They�were�deprecated�in�3.2.0,�when�equivalent�but�better-named�client<br>
1387��requests�were�added.��See�the�3.2.0�release�notes�for�more�details.<br>
1388<br>
1389-�The�behaviour�of�the�tool�Lackey�has�changed�slightly.��First,�the�output<br>
1390��from�--trace-mem�has�been�made�more�compact,�to�reduce�the�size�of�the<br>
1391��traces.��Second,�a�new�option�--trace-superblocks�has�been�added,�which<br>
1392��shows�the�addresses�of�superblocks�(code�blocks)�as�they�are�executed.<br>
1393<br>
1394-�The�following�bugs�have�been�fixed.��Note�that�"n-i-bz"�stands�for<br>
1395��"not�in�bugzilla"�--�that�is,�a�bug�that�was�reported�to�us�but<br>
1396��never�got�a�bugzilla�entry.��We�encourage�you�to�file�bugs�in<br>
1397��bugzilla�(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than<br>
1398��mailing�the�developers�(or�mailing�lists)�directly.<br>
1399<br>
1400��n-i-bz��x86_linux_REDIR_FOR_index()�broken<br>
1401��n-i-bz��guest-amd64/toIR.c:2512�(dis_op2_E_G):�Assertion�`0'�failed.<br>
1402��n-i-bz��Support�x86�INT�insn�(INT�(0xCD)�0x40�-�0x43)<br>
1403��n-i-bz��Add�sys_utimensat�system�call�for�Linux�x86�platform<br>
1404���79844��Helgrind�complains�about�race�condition�which�does�not�exist<br>
1405���82871��Massif�output�function�names�too�short<br>
1406���89061��Massif:�ms_main.c:485�(get_XCon):�Assertion�`xpt-&gt;max_chi...'<br>
1407���92615��Write�output�from�Massif�at�crash<br>
1408���95483��massif�feature�request:�include�peak�allocation�in�report<br>
1409��112163��MASSIF�crashed�with�signal�7�(SIGBUS)�after�running�2�days<br>
1410��119404��problems�running�setuid�executables�(partial�fix)<br>
1411��121629��add�instruction-counting�mode�for�timing<br>
1412��127371��java�vm�giving�unhandled�instruction�bytes:�0x26�0x2E�0x64�0x65<br>
1413��129937��==150380<br>
1414��129576��Massif�loses�track�of�memory,�incorrect�graphs<br>
1415��132132��massif�--format=html�output�does�not�do�html�entity�escaping<br>
1416��132950��Heap�alloc/usage�summary<br>
1417��133962��unhandled�instruction�bytes:�0xF2�0x4C�0xF�0x10<br>
1418��134990��use�-fno-stack-protector�if�possible<br>
1419��136382��==134990<br>
1420��137396��I�would�really�like�helgrind�to�work�again...<br>
1421��137714��x86/amd64-&gt;IR:�0x66�0xF�0xF7�0xC6�(maskmovq,�maskmovdq)<br>
1422��141631��Massif:�percentages�don't�add�up�correctly<br>
1423��142706��massif�numbers�don't�seem�to�add�up<br>
1424��143062��massif�crashes�on�app�exit�with�signal�8�SIGFPE<br>
1425��144453��(get_XCon):�Assertion�'xpt-&gt;max_children�!=�0'�failed.<br>
1426��145559��valgrind�aborts�when�malloc_stats�is�called<br>
1427��145609��valgrind�aborts�all�runs�with�'repeated�section!'<br>
1428��145622��--db-attach�broken�again�on�x86-64<br>
1429��145837��==149519<br>
1430��145887��PPC32:�getitimer()�system�call�is�not�supported<br>
1431��146252��==150678<br>
1432��146456��(update_XCon):�Assertion�'xpt-&gt;curr_space�&gt;=�-space_delta'...<br>
1433��146701��==134990<br>
1434��146781��Adding�support�for�private�futexes<br>
1435��147325��valgrind�internal�error�on�syscall�(SYS_io_destroy,�0)<br>
1436��147498��amd64-&gt;IR:�0xF0�0xF�0xB0�0xF�(lock�cmpxchg�%cl,(%rdi))<br>
1437��147545��Memcheck:�mc_main.c:817�(get_sec_vbits8):�Assertion�'n'�failed.<br>
1438��147628��SALC�opcode�0xd6�unimplemented<br>
1439��147825��crash�on�amd64-linux�with�gcc�4.2�and�glibc�2.6�(CFI)<br>
1440��148174��Incorrect�type�of�freed_list_volume�causes�assertion�[...]<br>
1441��148447��x86_64�:�new�NOP�codes:�66�66�66�66�2e�0f�1f<br>
1442��149182��PPC�Trap�instructions�not�implemented�in�valgrind<br>
1443��149504��Assertion�hit�on�alloc_xpt-&gt;curr_space�&gt;=�-space_delta<br>
1444��149519��ppc32:�V�aborts�with�SIGSEGV�on�execution�of�a�signal�handler<br>
1445��149892��==137714<br>
1446��150044��SEGV�during�stack�deregister<br>
1447��150380��dwarf/gcc�interoperation�(dwarf3�read�problems)<br>
1448��150408��==148447<br>
1449��150678��guest-amd64/toIR.c:3741�(dis_Grp5):�Assertion�`sz�==�4'�failed<br>
1450��151209��V�unable�to�execute�programs�for�users�with�UID�&gt;�2^16<br>
1451��151938��help�on�--db-command=�misleading<br>
1452��152022��subw�$0x28,�%%sp�causes�assertion�failure�in�memcheck<br>
1453��152357��inb�and�outb�not�recognized�in�64-bit�mode<br>
1454��152501��vex�x86-&gt;IR:�0x27�0x66�0x89�0x45�(daa)�<br>
1455��152818��vex�x86-&gt;IR:�0xF3�0xAC�0xFC�0x9C�(rep�lodsb)<br>
1456<br>
1457Developer-visible�changes:<br>
1458<br>
1459-�The�names�of�some�functions�and�types�within�the�Vex�IR�have<br>
1460��changed.��Run�'svn�log�-r1689�VEX/pub/libvex_ir.h'�for�full�details.<br>
1461��Any�existing�standalone�tools�will�have�to�be�updated�to�reflect<br>
1462��these�changes.��The�new�names�should�be�clearer.��The�file<br>
1463��VEX/pub/libvex_ir.h�is�also�much�better�commented.<br>
1464<br>
1465-�A�number�of�new�debugging�command�line�options�have�been�added.<br>
1466��These�are�mostly�of�use�for�debugging�the�symbol�table�and�line<br>
1467��number�readers:<br>
1468<br>
1469��--trace-symtab-patt=&lt;patt&gt;�limit�debuginfo�tracing�to�obj�name�&lt;patt&gt;<br>
1470��--trace-cfi=no|yes��������show�call-frame-info�details?�[no]<br>
1471��--debug-dump=syms���������mimic�/usr/bin/readelf�--syms<br>
1472��--debug-dump=line���������mimic�/usr/bin/readelf�--debug-dump=line<br>
1473��--debug-dump=frames�������mimic�/usr/bin/readelf�--debug-dump=frames<br>
1474��--sym-offsets=yes|no������show�syms�in�form�'name+offset'�?�[no]<br>
1475<br>
1476-�Internally,�the�code�base�has�been�further�factorised�and<br>
1477��abstractified,�particularly�with�respect�to�support�for�non-Linux<br>
1478��OSs.<br>
1479<br>
1480(3.3.0.RC1:��2�Dec�2007,�vex�r1803,�valgrind�r7268).<br>
1481(3.3.0.RC2:��5�Dec�2007,�vex�r1804,�valgrind�r7282).<br>
1482(3.3.0.RC3:��9�Dec�2007,�vex�r1804,�valgrind�r7288).<br>
1483(3.3.0:�����10�Dec�2007,�vex�r1804,�valgrind�r7290).<br>
1484<br>
1485<br>
1486<br>
1487Release�3.2.3�(29�Jan�2007)<br>
1488~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
1489Unfortunately�3.2.2�introduced�a�regression�which�can�cause�an<br>
1490assertion�failure�("vex:�the�`impossible'�happened:�eqIRConst")�when<br>
1491running�obscure�pieces�of�SSE�code.��3.2.3�fixes�this�and�adds�one<br>
1492more�glibc-2.5�intercept.��In�all�other�respects�it�is�identical�to<br>
14933.2.2.��Please�do�not�use�(or�package)�3.2.2;�instead�use�3.2.3.<br>
1494<br>
1495n-i-bz���vex:�the�`impossible'�happened:�eqIRConst<br>
1496n-i-bz���Add�an�intercept�for�glibc-2.5�__stpcpy_chk<br>
1497<br>
1498(3.2.3:�29�Jan�2007,�vex�r1732,�valgrind�r6560).<br>
1499<br>
1500<br>
1501Release�3.2.2�(22�Jan�2007)<br>
1502~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
15033.2.2�fixes�a�bunch�of�bugs�in�3.2.1,�adds�support�for�glibc-2.5�based<br>
1504systems�(openSUSE�10.2,�Fedora�Core�6),�improves�support�for�icc-9.X<br>
1505compiled�code,�and�brings�modest�performance�improvements�in�some<br>
1506areas,�including�amd64�floating�point,�powerpc�support,�and�startup<br>
1507responsiveness�on�all�targets.<br>
1508<br>
1509The�fixed�bugs�are�as�follows.��Note�that�"n-i-bz"�stands�for�"not�in<br>
1510bugzilla"�--�that�is,�a�bug�that�was�reported�to�us�but�never�got�a<br>
1511bugzilla�entry.��We�encourage�you�to�file�bugs�in�bugzilla<br>
1512(http://bugs.kde.org/enter_valgrind_bug.cgi)�rather�than�mailing�the<br>
1513developers�(or�mailing�lists)�directly.<br>
1514<br>
1515129390���ppc?-&gt;IR:�some�kind�of�VMX�prefetch�(dstt)<br>
1516129968���amd64-&gt;IR:�0xF�0xAE�0x0�(fxsave)<br>
1517134319���==129968<br>
1518133054���'make�install'�fails�with�syntax�errors<br>
1519118903���==133054<br>
1520132998���startup�fails�in�when�running�on�UML<br>
1521134207���pkg-config�output�contains�@VG_PLATFORM@<br>
1522134727���valgrind�exits�with�"Value�too�large�for�defined�data�type"<br>
1523n-i-bz���ppc32/64:�support�mcrfs<br>
1524n-i-bz���Cachegrind/Callgrind:�Update�cache�parameter�detection<br>
1525135012���x86-&gt;IR:�0xD7�0x8A�0xE0�0xD0�(xlat)<br>
1526125959���==135012<br>
1527126147���x86-&gt;IR:�0xF2�0xA5�0xF�0x77�(repne�movsw)<br>
1528136650���amd64-&gt;IR:�0xC2�0x8�0x0<br>
1529135421���x86-&gt;IR:�unhandled�Grp5(R)�case�6<br>
1530n-i-bz���Improved�documentation�of�the�IR�intermediate�representation<br>
1531n-i-bz���jcxz�(x86)�(users�list,�8�Nov)<br>
1532n-i-bz���ExeContext�hashing�fix<br>
1533n-i-bz���fix�CFI�reading�failures�("Dwarf�CFI�0:24�0:32�0:48�0:7")<br>
1534n-i-bz���fix�Cachegrind/Callgrind�simulation�bug<br>
1535n-i-bz���libmpiwrap.c:�fix�handling�of�MPI_LONG_DOUBLE<br>
1536n-i-bz���make�User�errors�suppressible<br>
1537136844���corrupted�malloc�line�when�using�--gen-suppressions=yes<br>
1538138507���==136844<br>
1539n-i-bz���Speed�up�the�JIT's�register�allocator<br>
1540n-i-bz���Fix�confusing�leak-checker�flag�hints<br>
1541n-i-bz���Support�recent�autoswamp�versions<br>
1542n-i-bz���ppc32/64�dispatcher�speedups<br>
1543n-i-bz���ppc64�front�end�rld/rlw�improvements<br>
1544n-i-bz���ppc64�back�end�imm64�improvements<br>
1545136300���support�64K�pages�on�ppc64-linux<br>
1546139124���==�136300<br>
1547n-i-bz���fix�ppc�insn�set�tests�for�gcc�&gt;=�4.1<br>
1548137493���x86-&gt;IR:�recent�binutils�no-ops<br>
1549137714���x86-&gt;IR:�0x66�0xF�0xF7�0xC6�(maskmovdqu)<br>
1550138424���"failed�in�UME�with�error�22"�(produce�a�better�error�msg)<br>
1551138856���==138424<br>
1552138627���Enhancement�support�for�prctl�ioctls<br>
1553138896���Add�support�for�usb�ioctls<br>
1554136059���==138896<br>
1555139050���ppc32-&gt;IR:�mfspr�268/269�instructions�not�handled<br>
1556n-i-bz���ppc32-&gt;IR:�lvxl/stvxl<br>
1557n-i-bz���glibc-2.5�support<br>
1558n-i-bz���memcheck:�provide�replacement�for�mempcpy<br>
1559n-i-bz���memcheck:�replace�bcmp�in�ld.so<br>
1560n-i-bz���Use�'ifndef'�in�VEX's�Makefile�correctly<br>
1561n-i-bz���Suppressions�for�MVL�4.0.1�on�ppc32-linux<br>
1562n-i-bz���libmpiwrap.c:�Fixes�for�MPICH<br>
1563n-i-bz���More�robust�handling�of�hinted�client�mmaps<br>
1564139776���Invalid�read�in�unaligned�memcpy�with�Intel�compiler�v9<br>
1565n-i-bz���Generate�valid�XML�even�for�very�long�fn�names<br>
1566n-i-bz���Don't�prompt�about�suppressions�for�unshown�reachable�leaks<br>
1567139910���amd64�rcl�is�not�supported<br>
1568n-i-bz���DWARF�CFI�reader:�handle�DW_CFA_undefined<br>
1569n-i-bz���DWARF�CFI�reader:�handle�icc9�generated�CFI�info�better<br>
1570n-i-bz���fix�false�uninit-value�errs�in�icc9�generated�FP�code<br>
1571n-i-bz���reduce�extraneous�frames�in�libmpiwrap.c<br>
1572n-i-bz���support�pselect6�on�amd64-linux<br>
1573<br>
1574(3.2.2:�22�Jan�2007,�vex�r1729,�valgrind�r6545).<br>
1575<br>
1576<br>
1577Release�3.2.1�(16�Sept�2006)<br>
1578~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
15793.2.1�adds�x86/amd64�support�for�all�SSE3�instructions�except�monitor<br>
1580and�mwait,�further�reduces�memcheck's�false�error�rate�on�all<br>
1581platforms,�adds�support�for�recent�binutils�(in�OpenSUSE�10.2�and<br>
1582Fedora�Rawhide)�and�fixes�a�bunch�of�bugs�in�3.2.0.��Some�of�the�fixed<br>
1583bugs�were�causing�large�programs�to�segfault�with�--tool=callgrind�and<br>
1584--tool=cachegrind,�so�an�upgrade�is�recommended.<br>
1585<br>
1586In�view�of�the�fact�that�any�3.3.0�release�is�unlikely�to�happen�until<br>
1587well�into�1Q07,�we�intend�to�keep�the�3.2.X�line�alive�for�a�while<br>
1588yet,�and�so�we�tentatively�plan�a�3.2.2�release�sometime�in�December<br>
158906.<br>
1590<br>
1591The�fixed�bugs�are�as�follows.��Note�that�"n-i-bz"�stands�for�"not�in<br>
1592bugzilla"�--�that�is,�a�bug�that�was�reported�to�us�but�never�got�a<br>
1593bugzilla�entry.<br>
1594<br>
1595n-i-bz���Expanding�brk()�into�last�available�page�asserts<br>
1596n-i-bz���ppc64-linux�stack�RZ�fast-case�snafu<br>
1597n-i-bz���'c'�in�--gen-supps=yes�doesn't�work<br>
1598n-i-bz���VG_N_SEGMENTS�too�low�(users,�28�June)<br>
1599n-i-bz���VG_N_SEGNAMES�too�low�(Stu�Robinson)<br>
1600106852���x86-&gt;IR:�fisttp�(SSE3)<br>
1601117172���FUTEX_WAKE�does�not�use�uaddr2<br>
1602124039���Lacks�support�for�VKI_[GP]IO_UNIMAP*<br>
1603127521���amd64-&gt;IR:�0xF0�0x48�0xF�0xC7�(cmpxchg8b)<br>
1604128917���amd64-&gt;IR:�0x66�0xF�0xF6�0xC4�(psadbw,SSE2)<br>
1605129246���JJ:�ppc32/ppc64�syscalls,�w/�patch<br>
1606129358���x86-&gt;IR:�fisttpl�(SSE3)<br>
1607129866���cachegrind/callgrind�causes�executable�to�die<br>
1608130020���Can't�stat�.so/.exe�error�while�reading�symbols<br>
1609130388���Valgrind�aborts�when�process�calls�malloc_trim()<br>
1610130638���PATCH:�ppc32�missing�system�calls<br>
1611130785���amd64-&gt;IR:�unhandled�instruction�"pushfq"<br>
1612131481:��(HINT_NOP)�vex�x86-&gt;IR:�0xF�0x1F�0x0�0xF<br>
1613131298���==131481<br>
1614132146���Programs�with�long�sequences�of�bswap[l,q]s<br>
1615132918���vex�amd64-&gt;IR:�0xD9�0xF8�(fprem)<br>
1616132813���Assertion�at�priv/guest-x86/toIR.c:652�fails<br>
1617133051���'cfsi-&gt;len�&gt;�0�&amp;&amp;�cfsi-&gt;len�&lt;�2000000'�failed<br>
1618132722���valgrind�header�files�are�not�standard�C<br>
1619n-i-bz���Livelocks�entire�machine�(users�list,�Timothy�Terriberry)<br>
1620n-i-bz���Alex�Bennee�mmap�problem�(9�Aug)<br>
1621n-i-bz���BartV:�Don't�print�more�lines�of�a�stack-trace�than�were�obtained.<br>
1622n-i-bz���ppc32�SuSE�10.1�redir<br>
1623n-i-bz���amd64�padding�suppressions<br>
1624n-i-bz���amd64�insn�printing�fix.<br>
1625n-i-bz���ppc�cmp�reg,reg�fix<br>
1626n-i-bz���x86/amd64�iropt�e/rflag�reduction�rules<br>
1627n-i-bz���SuSE�10.1�(ppc32)�minor�fixes<br>
1628133678���amd64-&gt;IR:�0x48�0xF�0xC5�0xC0�(pextrw?)<br>
1629133694���aspacem�assertion:�aspacem_minAddr�&lt;=�holeStart<br>
1630n-i-bz���callgrind:�fix�warning�about�malformed�creator�line�<br>
1631n-i-bz���callgrind:�fix�annotate�script�for�data�produced�with�<br>
1632���������--dump-instr=yes<br>
1633n-i-bz���callgrind:�fix�failed�assertion�when�toggling�<br>
1634���������instrumentation�mode<br>
1635n-i-bz���callgrind:�fix�annotate�script�fix�warnings�with<br>
1636���������--collect-jumps=yes<br>
1637n-i-bz���docs�path�hardwired�(Dennis�Lubert)<br>
1638<br>
1639The�following�bugs�were�not�fixed,�due�primarily�to�lack�of�developer<br>
1640time,�and�also�because�bug�reporters�did�not�answer�requests�for<br>
1641feedback�in�time�for�the�release:<br>
1642<br>
1643129390���ppc?-&gt;IR:�some�kind�of�VMX�prefetch�(dstt)<br>
1644129968���amd64-&gt;IR:�0xF�0xAE�0x0�(fxsave)<br>
1645133054���'make�install'�fails�with�syntax�errors<br>
1646n-i-bz���Signal�race�condition�(users�list,�13�June,�Johannes�Berg)<br>
1647n-i-bz���Unrecognised�instruction�at�address�0x70198EC2�(users�list,<br>
1648���������19�July,�Bennee)<br>
1649132998���startup�fails�in�when�running�on�UML<br>
1650<br>
1651The�following�bug�was�tentatively�fixed�on�the�mainline�but�the�fix<br>
1652was�considered�too�risky�to�push�into�3.2.X:<br>
1653<br>
1654133154���crash�when�using�client�requests�to�register/deregister�stack<br>
1655<br>
1656(3.2.1:�16�Sept�2006,�vex�r1658,�valgrind�r6070).<br>
1657<br>
1658<br>
1659Release�3.2.0�(7�June�2006)<br>
1660~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
16613.2.0�is�a�feature�release�with�many�significant�improvements�and�the<br>
1662usual�collection�of�bug�fixes.��This�release�supports�X86/Linux,<br>
1663AMD64/Linux,�PPC32/Linux�and�PPC64/Linux.<br>
1664<br>
1665Performance,�especially�of�Memcheck,�is�improved,�Addrcheck�has�been<br>
1666removed,�Callgrind�has�been�added,�PPC64/Linux�support�has�been�added,<br>
1667Lackey�has�been�improved,�and�MPI�support�has�been�added.��In�detail:<br>
1668<br>
1669-�Memcheck�has�improved�speed�and�reduced�memory�use.��Run�times�are<br>
1670��typically�reduced�by�15-30%,�averaging�about�24%�for�SPEC�CPU2000.<br>
1671��The�other�tools�have�smaller�but�noticeable�speed�improvments.��We<br>
1672��are�interested�to�hear�what�improvements�users�get.<br>
1673<br>
1674��Memcheck�uses�less�memory�due�to�the�introduction�of�a�compressed<br>
1675��representation�for�shadow�memory.��The�space�overhead�has�been<br>
1676��reduced�by�a�factor�of�up�to�four,�depending�on�program�behaviour.<br>
1677��This�means�you�should�be�able�to�run�programs�that�use�more�memory<br>
1678��than�before�without�hitting�problems.<br>
1679<br>
1680-�Addrcheck�has�been�removed.��It�has�not�worked�since�version�2.4.0,<br>
1681��and�the�speed�and�memory�improvements�to�Memcheck�make�it�redundant.<br>
1682��If�you�liked�using�Addrcheck�because�it�didn't�give�undefined�value<br>
1683��errors,�you�can�use�the�new�Memcheck�option�--undef-value-errors=no<br>
1684��to�get�the�same�behaviour.<br>
1685<br>
1686-�The�number�of�undefined-value�errors�incorrectly�reported�by<br>
1687��Memcheck�has�been�reduced�(such�false�reports�were�already�very<br>
1688��rare).��In�particular,�efforts�have�been�made�to�ensure�Memcheck<br>
1689��works�really�well�with�gcc�4.0/4.1-generated�code�on�X86/Linux�and<br>
1690��AMD64/Linux.<br>
1691<br>
1692-�Josef�Weidendorfer's�popular�Callgrind�tool�has�been�added.��Folding<br>
1693��it�in�was�a�logical�step�given�its�popularity�and�usefulness,�and<br>
1694��makes�it�easier�for�us�to�ensure�it�works�"out�of�the�box"�on�all<br>
1695��supported�targets.��The�associated�KDE�KCachegrind�GUI�remains�a<br>
1696��separate�project.<br>
1697<br>
1698-�A�new�release�of�the�Valkyrie�GUI�for�Memcheck,�version�1.2.0,<br>
1699��accompanies�this�release.��Improvements�over�previous�releases<br>
1700��include�improved�robustness,�many�refinements�to�the�user�interface,<br>
1701��and�use�of�a�standard�autoconf/automake�build�system.��You�can�get<br>
1702��it�from�http://www.valgrind.org/downloads/guis.html.<br>
1703<br>
1704-�Valgrind�now�works�on�PPC64/Linux.��As�with�the�AMD64/Linux�port,<br>
1705��this�supports�programs�using�to�32G�of�address�space.��On�64-bit<br>
1706��capable�PPC64/Linux�setups,�you�get�a�dual�architecture�build�so<br>
1707��that�both�32-bit�and�64-bit�executables�can�be�run.��Linux�on�POWER5<br>
1708��is�supported,�and�POWER4�is�also�believed�to�work.��Both�32-bit�and<br>
1709��64-bit�DWARF2�is�supported.��This�port�is�known�to�work�well�with<br>
1710��both�gcc-compiled�and�xlc/xlf-compiled�code.<br>
1711<br>
1712-�Floating�point�accuracy�has�been�improved�for�PPC32/Linux.<br>
1713��Specifically,�the�floating�point�rounding�mode�is�observed�on�all�FP<br>
1714��arithmetic�operations,�and�multiply-accumulate�instructions�are<br>
1715��preserved�by�the�compilation�pipeline.��This�means�you�should�get�FP<br>
1716��results�which�are�bit-for-bit�identical�to�a�native�run.��These<br>
1717��improvements�are�also�present�in�the�PPC64/Linux�port.<br>
1718<br>
1719-�Lackey,�the�example�tool,�has�been�improved:<br>
1720<br>
1721��*�It�has�a�new�option�--detailed-counts�(off�by�default)�which<br>
1722����causes�it�to�print�out�a�count�of�loads,�stores�and�ALU�operations<br>
1723����done,�and�their�sizes.<br>
1724<br>
1725��*�It�has�a�new�option�--trace-mem�(off�by�default)�which�causes�it<br>
1726����to�print�out�a�trace�of�all�memory�accesses�performed�by�a<br>
1727����program.��It's�a�good�starting�point�for�building�Valgrind�tools<br>
1728����that�need�to�track�memory�accesses.��Read�the�comments�at�the�top<br>
1729����of�the�file�lackey/lk_main.c�for�details.<br>
1730<br>
1731��*�The�original�instrumentation�(counting�numbers�of�instructions,<br>
1732����jumps,�etc)�is�now�controlled�by�a�new�option�--basic-counts.��It<br>
1733����is�on�by�default.<br>
1734<br>
1735-�MPI�support:�partial�support�for�debugging�distributed�applications<br>
1736��using�the�MPI�library�specification�has�been�added.��Valgrind�is<br>
1737��aware�of�the�memory�state�changes�caused�by�a�subset�of�the�MPI<br>
1738��functions,�and�will�carefully�check�data�passed�to�the�(P)MPI_<br>
1739��interface.<br>
1740<br>
1741-�A�new�flag,�--error-exitcode=,�has�been�added.��This�allows�changing<br>
1742��the�exit�code�in�runs�where�Valgrind�reported�errors,�which�is<br>
1743��useful�when�using�Valgrind�as�part�of�an�automated�test�suite.<br>
1744<br>
1745-�Various�segfaults�when�reading�old-style�"stabs"�debug�information<br>
1746��have�been�fixed.<br>
1747<br>
1748-�A�simple�performance�evaluation�suite�has�been�added.��See<br>
1749��perf/README�and�README_DEVELOPERS�for�details.��There�are<br>
1750��various�bells�and�whistles.<br>
1751<br>
1752-�New�configuration�flags:<br>
1753����--enable-only32bit<br>
1754����--enable-only64bit<br>
1755��By�default,�on�64�bit�platforms�(ppc64-linux,�amd64-linux)�the�build<br>
1756��system�will�attempt�to�build�a�Valgrind�which�supports�both�32-bit<br>
1757��and�64-bit�executables.��This�may�not�be�what�you�want,�and�you�can<br>
1758��override�the�default�behaviour�using�these�flags.<br>
1759<br>
1760Please�note�that�Helgrind�is�still�not�working.��We�have�made�an<br>
1761important�step�towards�making�it�work�again,�however,�with�the<br>
1762addition�of�function�wrapping�(see�below).<br>
1763<br>
1764Other�user-visible�changes:<br>
1765<br>
1766-�Valgrind�now�has�the�ability�to�intercept�and�wrap�arbitrary<br>
1767��functions.��This�is�a�preliminary�step�towards�making�Helgrind�work<br>
1768��again,�and�was�required�for�MPI�support.<br>
1769<br>
1770-�There�are�some�changes�to�Memcheck's�client�requests.��Some�of�them<br>
1771��have�changed�names:<br>
1772<br>
1773����MAKE_NOACCESS��--&gt;�MAKE_MEM_NOACCESS<br>
1774����MAKE_WRITABLE��--&gt;�MAKE_MEM_UNDEFINED<br>
1775����MAKE_READABLE��--&gt;�MAKE_MEM_DEFINED<br>
1776<br>
1777����CHECK_WRITABLE�--&gt;�CHECK_MEM_IS_ADDRESSABLE<br>
1778����CHECK_READABLE�--&gt;�CHECK_MEM_IS_DEFINED<br>
1779����CHECK_DEFINED��--&gt;�CHECK_VALUE_IS_DEFINED<br>
1780<br>
1781��The�reason�for�the�change�is�that�the�old�names�are�subtly<br>
1782��misleading.��The�old�names�will�still�work,�but�they�are�deprecated<br>
1783��and�may�be�removed�in�a�future�release.<br>
1784<br>
1785��We�also�added�a�new�client�request:<br>
1786��<br>
1787����MAKE_MEM_DEFINED_IF_ADDRESSABLE(a,�len)<br>
1788����<br>
1789��which�is�like�MAKE_MEM_DEFINED�but�only�affects�a�byte�if�the�byte�is<br>
1790��already�addressable.<br>
1791<br>
1792-�The�way�client�requests�are�encoded�in�the�instruction�stream�has<br>
1793��changed.��Unfortunately,�this�means�3.2.0�will�not�honour�client<br>
1794��requests�compiled�into�binaries�using�headers�from�earlier�versions<br>
1795��of�Valgrind.��We�will�try�to�keep�the�client�request�encodings�more�<br>
1796��stable�in�future.<br>
1797<br>
1798BUGS�FIXED:<br>
1799<br>
1800108258���NPTL�pthread�cleanup�handlers�not�called�<br>
1801117290���valgrind�is�sigKILL'd�on�startup<br>
1802117295���==�117290<br>
1803118703���m_signals.c:1427�Assertion�'tst-&gt;status�==�VgTs_WaitSys'<br>
1804118466���add�%reg,�%reg�generates�incorrect�validity�for�bit�0<br>
1805123210���New:�strlen�from�ld-linux�on�amd64<br>
1806123244���DWARF2�CFI�reader:�unhandled�CFI�instruction�0:18<br>
1807123248���syscalls�in�glibc-2.4:�openat,�fstatat,�symlinkat<br>
1808123258���socketcall.recvmsg(msg.msg_iov[i]�points�to�uninit<br>
1809123535���mremap(new_addr)�requires�MREMAP_FIXED�in�4th�arg<br>
1810123836���small�typo�in�the�doc<br>
1811124029���ppc�compile�failed:�`vor'�gcc�3.3.5<br>
1812124222���Segfault:�@@don't�know�what�type�':'�is<br>
1813124475���ppc32:�crash�(syscall?)�timer_settime()<br>
1814124499���amd64-&gt;IR:�0xF�0xE�0x48�0x85�(femms)<br>
1815124528���FATAL:�aspacem�assertion�failed:�segment_is_sane<br>
1816124697���vex�x86-&gt;IR:�0xF�0x70�0xC9�0x0�(pshufw)<br>
1817124892���vex�x86-&gt;IR:�0xF3�0xAE�(REPx�SCASB)<br>
1818126216���==�124892<br>
1819124808���ppc32:�sys_sched_getaffinity()�not�handled<br>
1820n-i-bz���Very�long�stabs�strings�crash�m_debuginfo<br>
1821n-i-bz���amd64-&gt;IR:�0x66�0xF�0xF5�(pmaddwd)<br>
1822125492���ppc32:�support�a�bunch�more�syscalls<br>
1823121617���ppc32/64:�coredumping�gives�assertion�failure<br>
1824121814���Coregrind�return�error�as�exitcode�patch<br>
1825126517���==�121814<br>
1826125607���amd64-&gt;IR:�0x66�0xF�0xA3�0x2�(btw�etc)<br>
1827125651���amd64-&gt;IR:�0xF8�0x49�0xFF�0xE3�(clc?)<br>
1828126253���x86�movx�is�wrong<br>
1829126451���3.2�SVN�doesn't�work�on�ppc32�CPU's�without�FPU<br>
1830126217���increase�#�threads<br>
1831126243���vex�x86-&gt;IR:�popw�mem<br>
1832126583���amd64-&gt;IR:�0x48�0xF�0xA4�0xC2�(shld�$1,%rax,%rdx)<br>
1833126668���amd64-&gt;IR:�0x1C�0xFF�(sbb�$0xff,%al)<br>
1834126696���support�for�CDROMREADRAW�ioctl�and�CDROMREADTOCENTRY�fix<br>
1835126722���assertion:�segment_is_sane�at�m_aspacemgr/aspacemgr.c:1624<br>
1836126938���bad�checking�for�syscalls�linkat,�renameat,�symlinkat<br>
1837<br>
1838(3.2.0RC1:�27�May��2006,�vex�r1626,�valgrind�r5947).<br>
1839(3.2.0:�����7�June�2006,�vex�r1628,�valgrind�r5957).<br>
1840<br>
1841<br>
1842Release�3.1.1�(15�March�2006)<br>
1843~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
18443.1.1�fixes�a�bunch�of�bugs�reported�in�3.1.0.��There�is�no�new<br>
1845functionality.��The�fixed�bugs�are:<br>
1846<br>
1847(note:�"n-i-bz"�means�"not�in�bugzilla"�--�this�bug�does�not�have<br>
1848�a�bugzilla�entry).<br>
1849<br>
1850n-i-bz���ppc32:�fsub�3,3,3�in�dispatcher�doesn't�clear�NaNs<br>
1851n-i-bz���ppc32:�__NR_{set,get}priority<br>
1852117332���x86:�missing�line�info�with�icc�8.1<br>
1853117366���amd64:�0xDD�0x7C�fnstsw<br>
1854118274���==�117366<br>
1855117367���amd64:�0xD9�0xF4�fxtract<br>
1856117369���amd64:�__NR_getpriority�(140)<br>
1857117419���ppc32:�lfsu�f5,�-4(r11)<br>
1858117419���ppc32:�fsqrt<br>
1859117936���more�stabs�problems�(segfaults�while�reading�debug�info)<br>
1860119914���==�117936<br>
1861120345���==�117936<br>
1862118239���amd64:�0xF�0xAE�0x3F�(clflush)<br>
1863118939���vm86old�system�call<br>
1864n-i-bz���memcheck/tests/mempool�reads�freed�memory<br>
1865n-i-bz���AshleyP's�custom-allocator�assertion<br>
1866n-i-bz���Dirk�strict-aliasing�stuff<br>
1867n-i-bz���More�space�for�debugger�cmd�line�(Dan�Thaler)<br>
1868n-i-bz���Clarified�leak�checker�output�message<br>
1869n-i-bz���AshleyP's�--gen-suppressions�output�fix<br>
1870n-i-bz���cg_annotate's�--sort�option�broken<br>
1871n-i-bz���OSet�64-bit�fastcmp�bug<br>
1872n-i-bz���VG_(getgroups)�fix�(Shinichi�Noda)<br>
1873n-i-bz���ppc32:�allocate�from�callee-saved�FP/VMX�regs<br>
1874n-i-bz���misaligned�path�word-size�bug�in�mc_main.c<br>
1875119297���Incorrect�error�message�for�sse�code<br>
1876120410���x86:�prefetchw�(0xF�0xD�0x48�0x4)<br>
1877120728���TIOCSERGETLSR,�TIOCGICOUNT,�HDIO_GET_DMA�ioctls<br>
1878120658���Build�fixes�for�gcc�2.96<br>
1879120734���x86:�Support�for�changing�EIP�in�signal�handler<br>
1880n-i-bz���memcheck/tests/zeropage�de-looping�fix<br>
1881n-i-bz���x86:�fxtract�doesn't�work�reliably<br>
1882121662���x86:�lock�xadd�(0xF0�0xF�0xC0�0x2)<br>
1883121893���calloc�does�not�always�return�zeroed�memory<br>
1884121901���no�support�for�syscall�tkill<br>
1885n-i-bz���Suppression�update�for�Debian�unstable<br>
1886122067���amd64:�fcmovnu�(0xDB�0xD9)<br>
1887n-i-bz���ppc32:�broken�signal�handling�in�cpu�feature�detection<br>
1888n-i-bz���ppc32:�rounding�mode�problems�(improved,�partial�fix�only)<br>
1889119482���ppc32:�mtfsb1<br>
1890n-i-bz���ppc32:�mtocrf/mfocrf<br>
1891<br>
1892(3.1.1:��15�March�2006,�vex�r1597,�valgrind�r5771).<br>
1893<br>
1894<br>
1895Release�3.1.0�(25�November�2005)<br>
1896~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
18973.1.0�is�a�feature�release�with�a�number�of�significant�improvements:<br>
1898AMD64�support�is�much�improved,�PPC32�support�is�good�enough�to�be<br>
1899usable,�and�the�handling�of�memory�management�and�address�space�is<br>
1900much�more�robust.��In�detail:<br>
1901<br>
1902-�AMD64�support�is�much�improved.��The�64-bit�vs.�32-bit�issues�in<br>
1903��3.0.X�have�been�resolved,�and�it�should�"just�work"�now�in�all<br>
1904��cases.��On�AMD64�machines�both�64-bit�and�32-bit�versions�of<br>
1905��Valgrind�are�built.��The�right�version�will�be�invoked<br>
1906��automatically,�even�when�using�--trace-children�and�mixing�execution<br>
1907��between�64-bit�and�32-bit�executables.��Also,�many�more�instructions<br>
1908��are�supported.<br>
1909<br>
1910-�PPC32�support�is�now�good�enough�to�be�usable.��It�should�work�with<br>
1911��all�tools,�but�please�let�us�know�if�you�have�problems.��Three<br>
1912��classes�of�CPUs�are�supported:�integer�only�(no�FP,�no�Altivec),<br>
1913��which�covers�embedded�PPC�uses,�integer�and�FP�but�no�Altivec<br>
1914��(G3-ish),�and�CPUs�capable�of�Altivec�too�(G4,�G5).<br>
1915<br>
1916-�Valgrind's�address�space�management�has�been�overhauled.��As�a<br>
1917��result,�Valgrind�should�be�much�more�robust�with�programs�that�use<br>
1918��large�amounts�of�memory.��There�should�be�many�fewer�"memory<br>
1919��exhausted"�messages,�and�debug�symbols�should�be�read�correctly�on<br>
1920��large�(eg.�300MB+)�executables.��On�32-bit�machines�the�full�address<br>
1921��space�available�to�user�programs�(usually�3GB�or�4GB)�can�be�fully<br>
1922��utilised.��On�64-bit�machines�up�to�32GB�of�space�is�usable;�when<br>
1923��using�Memcheck�that�means�your�program�can�use�up�to�about�14GB.<br>
1924<br>
1925��A�side�effect�of�this�change�is�that�Valgrind�is�no�longer�protected<br>
1926��against�wild�writes�by�the�client.��This�feature�was�nice�but�relied<br>
1927��on�the�x86�segment�registers�and�so�wasn't�portable.<br>
1928<br>
1929-�Most�users�should�not�notice,�but�as�part�of�the�address�space<br>
1930��manager�change,�the�way�Valgrind�is�built�has�been�changed.��Each<br>
1931��tool�is�now�built�as�a�statically�linked�stand-alone�executable,<br>
1932��rather�than�as�a�shared�object�that�is�dynamically�linked�with�the<br>
1933��core.��The�"valgrind"�program�invokes�the�appropriate�tool�depending<br>
1934��on�the�--tool�option.��This�slightly�increases�the�amount�of�disk<br>
1935��space�used�by�Valgrind,�but�it�greatly�simplified�many�things�and<br>
1936��removed�Valgrind's�dependence�on�glibc.<br>
1937<br>
1938Please�note�that�Addrcheck�and�Helgrind�are�still�not�working.��Work<br>
1939is�underway�to�reinstate�them�(or�equivalents).��We�apologise�for�the<br>
1940inconvenience.<br>
1941<br>
1942Other�user-visible�changes:<br>
1943<br>
1944-�The�--weird-hacks�option�has�been�renamed�--sim-hints.<br>
1945<br>
1946-�The�--time-stamp�option�no�longer�gives�an�absolute�date�and�time.<br>
1947��It�now�prints�the�time�elapsed�since�the�program�began.<br>
1948<br>
1949-�It�should�build�with�gcc-2.96.<br>
1950<br>
1951-�Valgrind�can�now�run�itself�(see�README_DEVELOPERS�for�how).<br>
1952��This�is�not�much�use�to�you,�but�it�means�the�developers�can�now<br>
1953��profile�Valgrind�using�Cachegrind.��As�a�result�a�couple�of<br>
1954��performance�bad�cases�have�been�fixed.<br>
1955<br>
1956-�The�XML�output�format�has�changed�slightly.��See<br>
1957��docs/internals/xml-output.txt.<br>
1958<br>
1959-�Core�dumping�has�been�reinstated�(it�was�disabled�in�3.0.0�and�3.0.1).<br>
1960��If�your�program�crashes�while�running�under�Valgrind,�a�core�file�with<br>
1961��the�name�"vgcore.&lt;pid&gt;"�will�be�created�(if�your�settings�allow�core<br>
1962��file�creation).��Note�that�the�floating�point�information�is�not�all<br>
1963��there.��If�Valgrind�itself�crashes,�the�OS�will�create�a�normal�core<br>
1964��file.<br>
1965<br>
1966The�following�are�some�user-visible�changes�that�occurred�in�earlier<br>
1967versions�that�may�not�have�been�announced,�or�were�announced�but�not<br>
1968widely�noticed.��So�we're�mentioning�them�now.<br>
1969<br>
1970-�The�--tool�flag�is�optional�once�again;��if�you�omit�it,�Memcheck<br>
1971��is�run�by�default.<br>
1972<br>
1973-�The�--num-callers�flag�now�has�a�default�value�of�12.��It�was<br>
1974��previously�4.<br>
1975<br>
1976-�The�--xml=yes�flag�causes�Valgrind's�output�to�be�produced�in�XML<br>
1977��format.��This�is�designed�to�make�it�easy�for�other�programs�to<br>
1978��consume�Valgrind's�output.��The�format�is�described�in�the�file<br>
1979��docs/internals/xml-format.txt.<br>
1980<br>
1981-�The�--gen-suppressions�flag�supports�an�"all"�value�that�causes�every<br>
1982��suppression�to�be�printed�without�asking.<br>
1983<br>
1984-�The�--log-file�option�no�longer�puts�"pid"�in�the�filename,�eg.�the<br>
1985��old�name�"foo.pid12345"�is�now�"foo.12345".<br>
1986<br>
1987-�There�are�several�graphical�front-ends�for�Valgrind,�such�as�Valkyrie,<br>
1988��Alleyoop�and�Valgui.��See�http://www.valgrind.org/downloads/guis.html<br>
1989��for�a�list.<br>
1990<br>
1991BUGS�FIXED:<br>
1992<br>
1993109861��amd64�hangs�at�startup<br>
1994110301��ditto<br>
1995111554��valgrind�crashes�with�Cannot�allocate�memory<br>
1996111809��Memcheck�tool�doesn't�start�java<br>
1997111901��cross-platform�run�of�cachegrind�fails�on�opteron<br>
1998113468��(vgPlain_mprotect_range):�Assertion�'r�!=�-1'�failed.<br>
1999�92071��Reading�debugging�info�uses�too�much�memory<br>
2000109744��memcheck�loses�track�of�mmap�from�direct�ld-linux.so.2<br>
2001110183��tail�of�page�with�_end<br>
2002�82301��FV�memory�layout�too�rigid<br>
2003�98278��Infinite�recursion�possible�when�allocating�memory<br>
2004108994��Valgrind�runs�out�of�memory�due�to�133x�overhead<br>
2005115643��valgrind�cannot�allocate�memory<br>
2006105974��vg_hashtable.c�static�hash�table<br>
2007109323��ppc32:�dispatch.S�uses�Altivec�insn,�which�doesn't�work�on�POWER.�<br>
2008109345��ptrace_setregs�not�yet�implemented�for�ppc<br>
2009110831��Would�like�to�be�able�to�run�against�both�32�and�64�bit�<br>
2010��������binaries�on�AMD64<br>
2011110829��==�110831<br>
2012111781��compile�of�valgrind-3.0.0�fails�on�my�linux�(gcc�2.X�prob)<br>
2013112670��Cachegrind:�cg_main.c:486�(handleOneStatement�...<br>
2014112941��vex�x86:�0xD9�0xF4�(fxtract)<br>
2015110201��==�112941<br>
2016113015��vex�amd64-&gt;IR:�0xE3�0x14�0x48�0x83�(jrcxz)<br>
2017113126��Crash�with�binaries�built�with�-gstabs+/-ggdb<br>
2018104065��==�113126<br>
2019115741��==�113126<br>
2020113403��Partial�SSE3�support�on�x86<br>
2021113541��vex:�Grp5(x86)�(alt�encoding�inc/dec)�case�1<br>
2022113642��valgrind�crashes�when�trying�to�read�debug�information<br>
2023113810��vex�x86-&gt;IR:�66�0F�F6�(66�+�PSADBW�==�SSE�PSADBW)<br>
2024113796��read()�and�write()�do�not�work�if�buffer�is�in�shared�memory<br>
2025113851��vex�x86-&gt;IR:�(pmaddwd):�0x66�0xF�0xF5�0xC7<br>
2026114366��vex�amd64�cannnot�handle�__asm__(�"fninit"�)<br>
2027114412��vex�amd64-&gt;IR:�0xF�0xAD�0xC2�0xD3�(128-bit�shift,�shrdq?)<br>
2028114455��vex�amd64-&gt;IR:�0xF�0xAC�0xD0�0x1�(also�shrdq)<br>
2029115590:�amd64-&gt;IR:�0x67�0xE3�0x9�0xEB�(address�size�override)<br>
2030115953��valgrind�svn�r5042�does�not�build�with�parallel�make�(-j3)<br>
2031116057��maximum�instruction�size�-�VG_MAX_INSTR_SZB�too�small?<br>
2032116483��shmat�failes�with�invalid�argument<br>
2033102202��valgrind�crashes�when�realloc'ing�until�out�of�memory<br>
2034109487��==�102202<br>
2035110536��==�102202<br>
2036112687��==�102202<br>
2037111724��vex�amd64-&gt;IR:�0x41�0xF�0xAB�(more�BT{,S,R,C}�fun�n�games)<br>
2038111748��vex�amd64-&gt;IR:�0xDD�0xE2�(fucom)<br>
2039111785��make�fails�if�CC�contains�spaces<br>
2040111829��vex�x86-&gt;IR:�sbb�AL,�Ib<br>
2041111851��vex�x86-&gt;IR:�0x9F�0x89�(lahf/sahf)<br>
2042112031��iopl�on�AMD64�and�README_MISSING_SYSCALL_OR_IOCTL�update<br>
2043112152��code�generation�for�Xin_MFence�on�x86�with�SSE0�subarch<br>
2044112167��==�112152<br>
2045112789��==�112152<br>
2046112199��naked�ar�tool�is�used�in�vex�makefile<br>
2047112501��vex�x86-&gt;IR:�movq�(0xF�0x7F�0xC1�0xF)�(mmx�MOVQ)<br>
2048113583��==�112501<br>
2049112538��memalign�crash<br>
2050113190��Broken�links�in�docs/html/<br>
2051113230��Valgrind�sys_pipe�on�x86-64�wrongly�thinks�file�descriptors<br>
2052��������should�be�64bit<br>
2053113996��vex�amd64-&gt;IR:�fucomp�(0xDD�0xE9)<br>
2054114196��vex�x86-&gt;IR:�out�%eax,(%dx)�(0xEF�0xC9�0xC3�0x90)<br>
2055114289��Memcheck�fails�to�intercept�malloc�when�used�in�an�uclibc�environment<br>
2056114756��mbind�syscall�support<br>
2057114757��Valgrind�dies�with�assertion:�Assertion�'noLargerThan�&gt;�0'�failed<br>
2058114563��stack�tracking�module�not�informed�when�valgrind�switches�threads<br>
2059114564��clone()�and�stacks<br>
2060114565��==�114564<br>
2061115496��glibc�crashes�trying�to�use�sysinfo�page<br>
2062116200��enable�fsetxattr,�fgetxattr,�and�fremovexattr�for�amd64<br>
2063<br>
2064(3.1.0RC1:�20�November�2005,�vex�r1466,�valgrind�r5224).<br>
2065(3.1.0:����26�November�2005,�vex�r1471,�valgrind�r5235).<br>
2066<br>
2067<br>
2068Release�3.0.1�(29�August�2005)<br>
2069~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
20703.0.1�fixes�a�bunch�of�bugs�reported�in�3.0.0.��There�is�no�new<br>
2071functionality.��Some�of�the�fixed�bugs�are�critical,�so�if�you<br>
2072use/distribute�3.0.0,�an�upgrade�to�3.0.1�is�recommended.��The�fixed<br>
2073bugs�are:<br>
2074<br>
2075(note:�"n-i-bz"�means�"not�in�bugzilla"�--�this�bug�does�not�have<br>
2076�a�bugzilla�entry).<br>
2077<br>
2078109313��(==�110505)�x86�cmpxchg8b<br>
2079n-i-bz��x86:�track�but�ignore�changes�to�%eflags.AC�(alignment�check)<br>
2080110102��dis_op2_E_G(amd64)<br>
2081110202��x86�sys_waitpid(#286)<br>
2082110203��clock_getres(,0)<br>
2083110208��execve�fail�wrong�retval<br>
2084110274��SSE1�now�mandatory�for�x86<br>
2085110388��amd64�0xDD�0xD1<br>
2086110464��amd64�0xDC�0x1D�FCOMP<br>
2087110478��amd64�0xF�0xD�PREFETCH<br>
2088n-i-bz��XML�&lt;unique&gt;�printing�wrong<br>
2089n-i-bz��Dirk�r4359�(amd64�syscalls�from�trunk)<br>
2090110591��amd64�and�x86:�rdtsc�not�implemented�properly<br>
2091n-i-bz��Nick�r4384�(stub�implementations�of�Addrcheck�and�Helgrind)<br>
2092110652��AMD64�valgrind�crashes�on�cwtd�instruction<br>
2093110653��AMD64�valgrind�crashes�on�sarb�$0x4,foo(%rip)�instruction<br>
2094110656��PATH=/usr/bin::/bin�valgrind�foobar�stats�./fooba<br>
2095110657��Small�test�fixes<br>
2096110671��vex�x86-&gt;IR:�unhandled�instruction�bytes:�0xF3�0xC3�(rep�ret)<br>
2097n-i-bz��Nick�(Cachegrind�should�not�assert�when�it�encounters�a�client<br>
2098��������request.)<br>
2099110685��amd64-&gt;IR:�unhandled�instruction�bytes:�0xE1�0x56�(loope�Jb)<br>
2100110830��configuring�with�--host�fails�to�build�32�bit�on�64�bit�target<br>
2101110875��Assertion�when�execve�fails<br>
2102n-i-bz��Updates�to�Memcheck�manual<br>
2103n-i-bz��Fixed�broken�malloc_usable_size()<br>
2104110898��opteron�instructions�missing:�btq�btsq�btrq�bsfq<br>
2105110954��x86-&gt;IR:�unhandled�instruction�bytes:�0xE2�0xF6�(loop�Jb)<br>
2106n-i-bz��Make�suppressions�work�for�"???"�lines�in�stacktraces.<br>
2107111006��bogus�warnings�from�linuxthreads<br>
2108111092��x86:�dis_Grp2(Reg):�unhandled�case(x86)�<br>
2109111231��sctp_getladdrs()�and�sctp_getpaddrs()�returns�uninitialized<br>
2110��������memory<br>
2111111102��(comment�#4)���Fixed�64-bit�unclean�"silly�arg"�message<br>
2112n-i-bz��vex�x86-&gt;IR:�unhandled�instruction�bytes:�0x14�0x0<br>
2113n-i-bz��minor�umount/fcntl�wrapper�fixes<br>
2114111090��Internal�Error�running�Massif<br>
2115101204��noisy�warning<br>
2116111513��Illegal�opcode�for�SSE�instruction�(x86�movups)<br>
2117111555��VEX/Makefile:�CC�is�set�to�gcc<br>
2118n-i-bz��Fix�XML�bugs�in�FAQ<br>
2119<br>
2120(3.0.1:�29�August�05,<br>
2121��������vex/branches/VEX_3_0_BRANCH�r1367,<br>
2122��������valgrind/branches/VALGRIND_3_0_BRANCH�r4574).<br>
2123<br>
2124<br>
2125<br>
2126Release�3.0.0�(3�August�2005)<br>
2127~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
21283.0.0�is�a�major�overhaul�of�Valgrind.��The�most�significant�user<br>
2129visible�change�is�that�Valgrind�now�supports�architectures�other�than<br>
2130x86.��The�new�architectures�it�supports�are�AMD64�and�PPC32,�and�the<br>
2131infrastructure�is�present�for�other�architectures�to�be�added�later.<br>
2132<br>
2133AMD64�support�works�well,�but�has�some�shortcomings:<br>
2134<br>
2135-�It�generally�won't�be�as�solid�as�the�x86�version.��For�example,<br>
2136��support�for�more�obscure�instructions�and�system�calls�may�be�missing.<br>
2137��We�will�fix�these�as�they�arise.<br>
2138<br>
2139-�Address�space�may�be�limited;�see�the�point�about<br>
2140��position-independent�executables�below.<br>
2141<br>
2142-�If�Valgrind�is�built�on�an�AMD64�machine,�it�will�only�run�64-bit<br>
2143��executables.��If�you�want�to�run�32-bit�x86�executables�under�Valgrind<br>
2144��on�an�AMD64,�you�will�need�to�build�Valgrind�on�an�x86�machine�and<br>
2145��copy�it�to�the�AMD64�machine.��And�it�probably�won't�work�if�you�do<br>
2146��something�tricky�like�exec'ing�a�32-bit�program�from�a�64-bit�program<br>
2147��while�using�--trace-children=yes.��We�hope�to�improve�this�situation<br>
2148��in�the�future.<br>
2149<br>
2150The�PPC32�support�is�very�basic.��It�may�not�work�reliably�even�for<br>
2151small�programs,�but�it's�a�start.��Many�thanks�to�Paul�Mackerras�for<br>
2152his�great�work�that�enabled�this�support.��We�are�working�to�make<br>
2153PPC32�usable�as�soon�as�possible.<br>
2154<br>
2155Other�user-visible�changes:<br>
2156<br>
2157-�Valgrind�is�no�longer�built�by�default�as�a�position-independent<br>
2158��executable�(PIE),�as�this�caused�too�many�problems.<br>
2159<br>
2160��Without�PIE�enabled,�AMD64�programs�will�only�be�able�to�access�2GB�of<br>
2161��address�space.��We�will�fix�this�eventually,�but�not�for�the�moment.<br>
2162��<br>
2163��Use�--enable-pie�at�configure-time�to�turn�this�on.<br>
2164<br>
2165-�Support�for�programs�that�use�stack-switching�has�been�improved.��Use<br>
2166��the�--max-stackframe�flag�for�simple�cases,�and�the<br>
2167��VALGRIND_STACK_REGISTER,�VALGRIND_STACK_DEREGISTER�and<br>
2168��VALGRIND_STACK_CHANGE�client�requests�for�trickier�cases.<br>
2169<br>
2170-�Support�for�programs�that�use�self-modifying�code�has�been�improved,<br>
2171��in�particular�programs�that�put�temporary�code�fragments�on�the�stack.<br>
2172��This�helps�for�C�programs�compiled�with�GCC�that�use�nested�functions,<br>
2173��and�also�Ada�programs.��This�is�controlled�with�the�--smc-check<br>
2174��flag,�although�the�default�setting�should�work�in�most�cases.<br>
2175<br>
2176-�Output�can�now�be�printed�in�XML�format.��This�should�make�it�easier<br>
2177��for�tools�such�as�GUI�front-ends�and�automated�error-processing<br>
2178��schemes�to�use�Valgrind�output�as�input.��The�--xml�flag�controls�this.<br>
2179��As�part�of�this�change,�ELF�directory�information�is�read�from�executables,<br>
2180��so�absolute�source�file�paths�are�available�if�needed.<br>
2181<br>
2182-�Programs�that�allocate�many�heap�blocks�may�run�faster,�due�to<br>
2183��improvements�in�certain�data�structures.<br>
2184<br>
2185-�Addrcheck�is�currently�not�working.��We�hope�to�get�it�working�again<br>
2186��soon.��Helgrind�is�still�not�working,�as�was�the�case�for�the�2.4.0<br>
2187��release.<br>
2188<br>
2189-�The�JITter�has�been�completely�rewritten,�and�is�now�in�a�separate<br>
2190��library,�called�Vex.��This�enabled�a�lot�of�the�user-visible�changes,<br>
2191��such�as�new�architecture�support.��The�new�JIT�unfortunately�translates<br>
2192��more�slowly�than�the�old�one,�so�programs�may�take�longer�to�start.<br>
2193��We�believe�the�code�quality�is�produces�is�about�the�same,�so�once<br>
2194��started,�programs�should�run�at�about�the�same�speed.��Feedback�about<br>
2195��this�would�be�useful.<br>
2196<br>
2197��On�the�plus�side,�Vex�and�hence�Memcheck�tracks�value�flow�properly<br>
2198��through�floating�point�and�vector�registers,�something�the�2.X�line<br>
2199��could�not�do.��That�means�that�Memcheck�is�much�more�likely�to�be<br>
2200��usably�accurate�on�vectorised�code.<br>
2201<br>
2202-�There�is�a�subtle�change�to�the�way�exiting�of�threaded�programs<br>
2203��is�handled.��In�3.0,�Valgrind's�final�diagnostic�output�(leak�check,<br>
2204��etc)�is�not�printed�until�the�last�thread�exits.��If�the�last�thread<br>
2205��to�exit�was�not�the�original�thread�which�started�the�program,�any<br>
2206��other�process�wait()-ing�on�this�one�to�exit�may�conclude�it�has<br>
2207��finished�before�the�diagnostic�output�is�printed.��This�may�not�be<br>
2208��what�you�expect.��2.X�had�a�different�scheme�which�avoided�this<br>
2209��problem,�but�caused�deadlocks�under�obscure�circumstances,�so�we<br>
2210��are�trying�something�different�for�3.0.<br>
2211<br>
2212-�Small�changes�in�control�log�file�naming�which�make�it�easier�to<br>
2213��use�valgrind�for�debugging�MPI-based�programs.��The�relevant<br>
2214��new�flags�are�--log-file-exactly=�and�--log-file-qualifier=.<br>
2215<br>
2216-�As�part�of�adding�AMD64�support,�DWARF2�CFI-based�stack�unwinding<br>
2217��support�was�added.��In�principle�this�means�Valgrind�can�produce<br>
2218��meaningful�backtraces�on�x86�code�compiled�with�-fomit-frame-pointer<br>
2219��providing�you�also�compile�your�code�with�-fasynchronous-unwind-tables.<br>
2220<br>
2221-�The�documentation�build�system�has�been�completely�redone.<br>
2222��The�documentation�masters�are�now�in�XML�format,�and�from�that<br>
2223��HTML,�PostScript�and�PDF�documentation�is�generated.��As�a�result<br>
2224��the�manual�is�now�available�in�book�form.��Note�that�the<br>
2225��documentation�in�the�source�tarballs�is�pre-built,�so�you�don't�need<br>
2226��any�XML�processing�tools�to�build�Valgrind�from�a�tarball.<br>
2227<br>
2228Changes�that�are�not�user-visible:<br>
2229<br>
2230-�The�code�has�been�massively�overhauled�in�order�to�modularise�it.<br>
2231��As�a�result�we�hope�it�is�easier�to�navigate�and�understand.<br>
2232<br>
2233-�Lots�of�code�has�been�rewritten.<br>
2234<br>
2235BUGS�FIXED:<br>
2236<br>
2237110046��sz�==�4�assertion�failed�<br>
2238109810��vex�amd64-&gt;IR:�unhandled�instruction�bytes:�0xA3�0x4C�0x70�0xD7<br>
2239109802��Add�a�plausible_stack_size�command-line�parameter�?<br>
2240109783��unhandled�ioctl�TIOCMGET�(running�hw�detection�tool�discover)�<br>
2241109780��unhandled�ioctl�BLKSSZGET�(running�fdisk�-l�/dev/hda)<br>
2242109718��vex�x86-&gt;IR:�unhandled�instruction:�ffreep�<br>
2243109429��AMD64�unhandled�syscall:�127�(sigpending)<br>
2244109401��false�positive�uninit�in�strchr�from�ld-linux.so.2<br>
2245109385��"stabs"�parse�failure�<br>
2246109378��amd64:�unhandled�instruction�REP�NOP<br>
2247109376��amd64:�unhandled�instruction�LOOP�Jb�<br>
2248109363��AMD64�unhandled�instruction�bytes�<br>
2249109362��AMD64�unhandled�syscall:�24�(sched_yield)<br>
2250109358��fork()�won't�work�with�valgrind-3.0�SVN<br>
2251109332��amd64�unhandled�instruction:�ADC�Ev,�Gv<br>
2252109314��Bogus�memcheck�report�on�amd64<br>
2253108883��Crash;�vg_memory.c:905�(vgPlain_init_shadow_range):<br>
2254��������Assertion�`vgPlain_defined_init_shadow_page()'�failed.<br>
2255108349��mincore�syscall�parameter�checked�incorrectly�<br>
2256108059��build�infrastructure:�small�update<br>
2257107524��epoll_ctl�event�parameter�checked�on�EPOLL_CTL_DEL<br>
2258107123��Vex�dies�with�unhandled�instructions:�0xD9�0x31�0xF�0xAE<br>
2259106841��auxmap�&amp;�openGL�problems<br>
2260106713��SDL_Init�causes�valgrind�to�exit<br>
2261106352��setcontext�and�makecontext�not�handled�correctly�<br>
2262106293��addresses�beyond�initial�client�stack�allocation�<br>
2263��������not�checked�in�VALGRIND_DO_LEAK_CHECK<br>
2264106283��PIE�client�programs�are�loaded�at�address�0<br>
2265105831��Assertion�`vgPlain_defined_init_shadow_page()'�failed.<br>
2266105039��long�run-times�probably�due�to�memory�manager�<br>
2267104797��valgrind�needs�to�be�aware�of�BLKGETSIZE64<br>
2268103594��unhandled�instruction:�FICOM<br>
2269103320��Valgrind�2.4.0�fails�to�compile�with�gcc�3.4.3�and�-O0<br>
2270103168��potentially�memory�leak�in�coregrind/ume.c�<br>
2271102039��bad�permissions�for�mapped�region�at�address�0xB7C73680<br>
2272101881��weird�assertion�problem<br>
2273101543��Support�fadvise64�syscalls<br>
227475247���x86_64/amd64�support�(the�biggest�"bug"�we�have�ever�fixed)<br>
2275<br>
2276(3.0RC1:�27�July���05,�vex�r1303,�valgrind�r4283).<br>
2277(3.0.0:���3�August�05,�vex�r1313,�valgrind�r4316).<br>
2278<br>
2279<br>
2280<br>
2281Stable�release�2.4.1�(1�August�2005)<br>
2282~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
2283(The�notes�for�this�release�have�been�lost.��Sorry!��It�would�have<br>
2284contained�various�bug�fixes�but�no�new�features.)<br>
2285<br>
2286<br>
2287<br>
2288Stable�release�2.4.0�(March�2005)�--�CHANGES�RELATIVE�TO�2.2.0<br>
2289~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
22902.4.0�brings�many�significant�changes�and�bug�fixes.��The�most<br>
2291significant�user-visible�change�is�that�we�no�longer�supply�our�own<br>
2292pthread�implementation.��Instead,�Valgrind�is�finally�capable�of<br>
2293running�the�native�thread�library,�either�LinuxThreads�or�NPTL.<br>
2294<br>
2295This�means�our�libpthread�has�gone,�along�with�the�bugs�associated<br>
2296with�it.��Valgrind�now�supports�the�kernel's�threading�syscalls,�and<br>
2297lets�you�use�your�standard�system�libpthread.��As�a�result:<br>
2298<br>
2299*�There�are�many�fewer�system�dependencies�and�strange�library-related<br>
2300��bugs.��There�is�a�small�performance�improvement,�and�a�large<br>
2301��stability�improvement.<br>
2302<br>
2303*�On�the�downside,�Valgrind�can�no�longer�report�misuses�of�the�POSIX<br>
2304��PThreads�API.��It�also�means�that�Helgrind�currently�does�not�work.<br>
2305��We�hope�to�fix�these�problems�in�a�future�release.<br>
2306<br>
2307Note�that�running�the�native�thread�libraries�does�not�mean�Valgrind<br>
2308is�able�to�provide�genuine�concurrent�execution�on�SMPs.��We�still<br>
2309impose�the�restriction�that�only�one�thread�is�running�at�any�given<br>
2310time.<br>
2311<br>
2312There�are�many�other�significant�changes�too:<br>
2313<br>
2314*�Memcheck�is�(once�again)�the�default�tool.<br>
2315<br>
2316*�The�default�stack�backtrace�is�now�12�call�frames,�rather�than�4.<br>
2317<br>
2318*�Suppressions�can�have�up�to�25�call�frame�matches,�rather�than�4.<br>
2319<br>
2320*�Memcheck�and�Addrcheck�use�less�memory.��Under�some�circumstances,<br>
2321��they�no�longer�allocate�shadow�memory�if�there�are�large�regions�of<br>
2322��memory�with�the�same�A/V�states�-�such�as�an�mmaped�file.<br>
2323<br>
2324*�The�memory-leak�detector�in�Memcheck�and�Addrcheck�has�been<br>
2325��improved.��It�now�reports�more�types�of�memory�leak,�including<br>
2326��leaked�cycles.��When�reporting�leaked�memory,�it�can�distinguish<br>
2327��between�directly�leaked�memory�(memory�with�no�references),�and<br>
2328��indirectly�leaked�memory�(memory�only�referred�to�by�other�leaked<br>
2329��memory).<br>
2330<br>
2331*�Memcheck's�confusion�over�the�effect�of�mprotect()�has�been�fixed:<br>
2332��previously�mprotect�could�erroneously�mark�undefined�data�as<br>
2333��defined.<br>
2334<br>
2335*�Signal�handling�is�much�improved�and�should�be�very�close�to�what<br>
2336��you�get�when�running�natively.��<br>
2337<br>
2338��One�result�of�this�is�that�Valgrind�observes�changes�to�sigcontexts<br>
2339��passed�to�signal�handlers.��Such�modifications�will�take�effect�when<br>
2340��the�signal�returns.��You�will�need�to�run�with�--single-step=yes�to<br>
2341��make�this�useful.<br>
2342<br>
2343*�Valgrind�is�built�in�Position�Independent�Executable�(PIE)�format�if<br>
2344��your�toolchain�supports�it.��This�allows�it�to�take�advantage�of�all<br>
2345��the�available�address�space�on�systems�with�4Gbyte�user�address<br>
2346��spaces.<br>
2347<br>
2348*�Valgrind�can�now�run�itself�(requires�PIE�support).<br>
2349<br>
2350*�Syscall�arguments�are�now�checked�for�validity.��Previously�all<br>
2351��memory�used�by�syscalls�was�checked,�but�now�the�actual�values<br>
2352��passed�are�also�checked.<br>
2353<br>
2354*�Syscall�wrappers�are�more�robust�against�bad�addresses�being�passed<br>
2355��to�syscalls:�they�will�fail�with�EFAULT�rather�than�killing�Valgrind<br>
2356��with�SIGSEGV.<br>
2357<br>
2358*�Because�clone()�is�directly�supported,�some�non-pthread�uses�of�it<br>
2359��will�work.��Partial�sharing�(where�some�resources�are�shared,�and<br>
2360��some�are�not)�is�not�supported.<br>
2361<br>
2362*�open()�and�readlink()�on�/proc/self/exe�are�supported.<br>
2363<br>
2364BUGS�FIXED:<br>
2365<br>
236688520���pipe+fork+dup2�kills�the�main�program<br>
236788604�	Valgrind�Aborts�when�using�$VALGRIND_OPTS�and�user�progra...<br>
236888614�	valgrind:�vg_libpthread.c:2323�(read):�Assertion�`read_pt...<br>
236988703�	Stabs�parser�fails�to�handle�";"<br>
237088886�	ioctl�wrappers�for�TIOCMBIS�and�TIOCMBIC<br>
237189032�	valgrind�pthread_cond_timedwait�fails<br>
237289106�	the�'impossible'�happened<br>
237389139�	Missing�sched_setaffinity�&amp;�sched_getaffinity<br>
237489198�	valgrind�lacks�support�for�SIOCSPGRP�and�SIOCGPGRP<br>
237589263�	Missing�ioctl�translations�for�scsi-generic�and�CD�playing<br>
237689440�	tests/deadlock.c�line�endings<br>
237789481�	`impossible'�happened:�EXEC�FAILED<br>
237889663�	valgrind�2.2.0�crash�on�Redhat�7.2<br>
237989792�	Report�pthread_mutex_lock()�deadlocks�instead�of�returnin...<br>
238090111�	statvfs64�gives�invalid�error/warning<br>
238190128�	crash+memory�fault�with�stabs�generated�by�gnat�for�a�run...<br>
238290778�	VALGRIND_CHECK_DEFINED()�not�as�documented�in�memcheck.h<br>
238390834�	cachegrind�crashes�at�end�of�program�without�reporting�re...<br>
238491028�	valgrind:�vg_memory.c:229�(vgPlain_unmap_range):�Assertio...<br>
238591162�	valgrind�crash�while�debugging�drivel�1.2.1<br>
238691199�	Unimplemented�function<br>
238791325�	Signal�routing�does�not�propagate�the�siginfo�structure<br>
238891599�	Assertion�`cv�==�((void�*)0)'<br>
238991604�	rw_lookup�clears�orig�and�sends�the�NULL�value�to�rw_new<br>
239091821�	Small�problems�building�valgrind�with�$top_builddir�ne�$t...<br>
239191844�	signal�11�(SIGSEGV)�at�get_tcb�(libpthread.c:86)�in�corec...<br>
239292264�	UNIMPLEMENTED�FUNCTION:�pthread_condattr_setpshared<br>
239392331�	per-target�flags�necessitate�AM_PROG_CC_C_O<br>
239492420�	valgrind�doesn't�compile�with�linux�2.6.8.1/9<br>
239592513�	Valgrind�2.2.0�generates�some�warning�messages<br>
239692528�	vg_symtab2.c:170�(addLoc):�Assertion�`loc-&gt;size�&gt;�0'�failed.<br>
239793096�	unhandled�ioctl�0x4B3A�and�0x5601<br>
239893117�	Tool�and�core�interface�versions�do�not�match<br>
239993128�	Can't�run�valgrind�--tool=memcheck�because�of�unimplement...<br>
240093174�	Valgrind�can�crash�if�passed�bad�args�to�certain�syscalls<br>
240193309�	Stack�frame�in�new�thread�is�badly�aligned<br>
240293328�	Wrong�types�used�with�sys_sigprocmask()<br>
240393763�	/usr/include/asm/msr.h�is�missing<br>
240493776�	valgrind:�vg_memory.c:508�(vgPlain_find_map_space):�Asser...<br>
240593810�	fcntl()�argument�checking�a�bit�too�strict<br>
240694378�	Assertion�`tst-&gt;sigqueue_head�!=�tst-&gt;sigqueue_tail'�failed.<br>
240794429�	valgrind�2.2.0�segfault�with�mmap64�in�glibc�2.3.3<br>
240894645�	Impossible�happened:�PINSRW�mem<br>
240994953�	valgrind:�the�`impossible'�happened:�SIGSEGV<br>
241095667�	Valgrind�does�not�work�with�any�KDE�app<br>
241196243�	Assertion�'res==0'�failed<br>
241296252�	stage2�loader�of�valgrind�fails�to�allocate�memory<br>
241396520�	All�programs�crashing�at�_dl_start�(in�/lib/ld-2.3.3.so)�...<br>
241496660�	ioctl�CDROMREADTOCENTRY�causes�bogus�warnings<br>
241596747�	After�looping�in�a�segfault�handler,�the�impossible�happens<br>
241696923�	Zero�sized�arrays�crash�valgrind�trace�back�with�SIGFPE<br>
241796948�	valgrind�stops�with�assertion�failure�regarding�mmap2<br>
241896966�	valgrind�fails�when�application�opens�more�than�16�sockets<br>
241997398�	valgrind:�vg_libpthread.c:2667�Assertion�failed<br>
242097407�	valgrind:�vg_mylibc.c:1226�(vgPlain_safe_fd):�Assertion�`...<br>
242197427�	"Warning:�invalid�file�descriptor�-1�in�syscall�close()"�...<br>
242297785�	missing�backtrace<br>
242397792�	build�in�obj�dir�fails�-�autoconf�/�makefile�cleanup<br>
242497880�	pthread_mutex_lock�fails�from�shared�library�(special�ker...<br>
242597975�	program�aborts�without�ang�VG�messages<br>
242698129�	Failed�when�open�and�close�file�230000�times�using�stdio<br>
242798175�	Crashes�when�using�valgrind-2.2.0�with�a�program�using�al...<br>
242898288�	Massif�broken<br>
242998303�	UNIMPLEMENTED�FUNCTION�pthread_condattr_setpshared<br>
243098630�	failed--compilation�missing�warnings.pm,�fails�to�make�he...<br>
243198756�	Cannot�valgrind�signal-heavy�kdrive�X�server<br>
243298966�	valgrinding�the�JVM�fails�with�a�sanity�check�assertion<br>
243399035�	Valgrind�crashes�while�profiling<br>
243499142�	loops�with�message�"Signal�11�being�dropped�from�thread�0...<br>
243599195�	threaded�apps�crash�on�thread�start�(using�QThread::start...<br>
243699348�	Assertion�`vgPlain_lseek(core_fd,�0,�1)�==�phdrs[i].p_off...<br>
243799568�	False�negative�due�to�mishandling�of�mprotect<br>
243899738�	valgrind�memcheck�crashes�on�program�that�uses�sigitimer<br>
243999923�	0-sized�allocations�are�reported�as�leaks<br>
244099949�	program�seg�faults�after�exit()<br>
2441100036�	"newSuperblock's�request�for�1048576�bytes�failed"<br>
2442100116�	valgrind:�(pthread_cond_init):�Assertion�`sizeof(*�cond)�...<br>
2443100486�	memcheck�reports�"valgrind:�the�`impossible'�happened:�V...<br>
2444100833�	second�call�to�"mremap"�fails�with�EINVAL<br>
2445101156�	(vgPlain_find_map_space):�Assertion�`(addr�&amp;�((1�&lt;&lt;�12)-1...<br>
2446101173�	Assertion�`recDepth�&gt;=�0�&amp;&amp;�recDepth�&lt;�500'�failed<br>
2447101291�	creating�threads�in�a�forked�process�fails<br>
2448101313�	valgrind�causes�different�behavior�when�resizing�a�window...<br>
2449101423�	segfault�for�c++�array�of�floats<br>
2450101562�	valgrind�massif�dies�on�SIGINT�even�with�signal�handler�r...<br>
2451<br>
2452<br>
2453Stable�release�2.2.0�(31�August�2004)�--�CHANGES�RELATIVE�TO�2.0.0<br>
2454~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
24552.2.0�brings�nine�months�worth�of�improvements�and�bug�fixes.��We<br>
2456believe�it�to�be�a�worthy�successor�to�2.0.0.��There�are�literally<br>
2457hundreds�of�bug�fixes�and�minor�improvements.��There�are�also�some<br>
2458fairly�major�user-visible�changes:<br>
2459<br>
2460*�A�complete�overhaul�of�handling�of�system�calls�and�signals,�and�<br>
2461��their�interaction�with�threads.��In�general,�the�accuracy�of�the�<br>
2462��system�call,�thread�and�signal�simulations�is�much�improved:<br>
2463<br>
2464��-�Blocking�system�calls�behave�exactly�as�they�do�when�running<br>
2465����natively�(not�on�valgrind).��That�is,�if�a�syscall�blocks�only�the<br>
2466����calling�thread�when�running�natively,�than�it�behaves�the�same�on<br>
2467����valgrind.��No�more�mysterious�hangs�because�V�doesn't�know�that�some<br>
2468����syscall�or�other,�should�block�only�the�calling�thread.<br>
2469<br>
2470��-�Interrupted�syscalls�should�now�give�more�faithful�results.<br>
2471<br>
2472��-�Signal�contexts�in�signal�handlers�are�supported.<br>
2473<br>
2474*�Improvements�to�NPTL�support�to�the�extent�that�V�now�works�<br>
2475��properly�on�NPTL-only�setups.<br>
2476<br>
2477*�Greater�isolation�between�Valgrind�and�the�program�being�run,�so<br>
2478��the�program�is�less�likely�to�inadvertently�kill�Valgrind�by<br>
2479��doing�wild�writes.<br>
2480<br>
2481*�Massif:�a�new�space�profiling�tool.��Try�it!��It's�cool,�and�it'll<br>
2482��tell�you�in�detail�where�and�when�your�C/C++�code�is�allocating�heap.<br>
2483��Draws�pretty�.ps�pictures�of�memory�use�against�time.��A�potentially<br>
2484��powerful�tool�for�making�sense�of�your�program's�space�use.<br>
2485<br>
2486*�File�descriptor�leakage�checks.��When�enabled,�Valgrind�will�print�out<br>
2487��a�list�of�open�file�descriptors�on�exit.<br>
2488<br>
2489*�Improved�SSE2/SSE3�support.<br>
2490<br>
2491*�Time-stamped�output;�use�--time-stamp=yes<br>
2492<br>
2493<br>
2494<br>
2495Stable�release�2.2.0�(31�August�2004)�--�CHANGES�RELATIVE�TO�2.1.2<br>
2496~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
24972.2.0�is�not�much�different�from�2.1.2,�released�seven�weeks�ago.<br>
2498A�number�of�bugs�have�been�fixed,�most�notably�#85658,�which�gave<br>
2499problems�for�quite�a�few�people.��There�have�been�many�internal<br>
2500cleanups,�but�those�are�not�user�visible.<br>
2501<br>
2502The�following�bugs�have�been�fixed�since�2.1.2:<br>
2503<br>
250485658���Assert�in�coregrind/vg_libpthread.c:2326�(open64)�!=<br>
2505��������(void*)0�failed<br>
2506��������This�bug�was�reported�multiple�times,�and�so�the�following<br>
2507��������duplicates�of�it�are�also�fixed:�87620,�85796,�85935,�86065,�<br>
2508��������86919,�86988,�87917,�88156<br>
2509<br>
251080716���Semaphore�mapping�bug�caused�by�unmap�(sem_destroy)<br>
2511��������(Was�fixed�prior�to�2.1.2)<br>
2512<br>
251386987���semctl�and�shmctl�syscalls�family�is�not�handled�properly<br>
2514<br>
251586696���valgrind�2.1.2�+�RH�AS2.1�+�librt<br>
2516<br>
251786730���valgrind�locks�up�at�end�of�run�with�assertion�failure�<br>
2518��������in�__pthread_unwind<br>
2519<br>
252086641���memcheck�doesn't�work�with�Mesa�OpenGL/ATI�on�Suse�9.1<br>
2521��������(also�fixes�74298,�a�duplicate�of�this)<br>
2522<br>
252385947���MMX/SSE�unhandled�instruction�'sfence'<br>
2524<br>
252584978���Wrong�error�"Conditional�jump�or�move�depends�on<br>
2526��������uninitialised�value"�resulting�from�"sbbl�%reg,�%reg"<br>
2527<br>
252886254���ssort()�fails�when�signed�int�return�type�from�comparison�is�<br>
2529��������too�small�to�handle�result�of�unsigned�int�subtraction<br>
2530<br>
253187089���memalign(�4,�xxx)�makes�valgrind�assert<br>
2532<br>
253386407���Add�support�for�low-level�parallel�port�driver�ioctls.<br>
2534<br>
253570587���Add�timestamps�to�Valgrind�output?�(wishlist)<br>
2536<br>
253784937���vg_libpthread.c:2505�(se_remap):�Assertion�`res�==�0'<br>
2538��������(fixed�prior�to�2.1.2)<br>
2539<br>
254086317���cannot�load�libSDL-1.2.so.0�using�valgrind<br>
2541<br>
254286989���memcpy�from�mac_replace_strmem.c�complains�about<br>
2543��������uninitialized�pointers�passed�when�length�to�copy�is�zero<br>
2544<br>
254585811���gnu�pascal�symbol�causes�segmentation�fault;�ok�in�2.0.0<br>
2546<br>
254779138���writing�to�sbrk()'d�memory�causes�segfault<br>
2548<br>
254977369���sched�deadlock�while�signal�received�during�pthread_join<br>
2550��������and�the�joined�thread�exited<br>
2551<br>
255288115���In�signal�handler�for�SIGFPE,��siginfo-&gt;si_addr�is�wrong�<br>
2553��������under�Valgrind<br>
2554<br>
255578765���Massif�crashes�on�app�exit�if�FP�exceptions�are�enabled<br>
2556<br>
2557Additionally�there�are�the�following�changes,�which�are�not�<br>
2558connected�to�any�bug�report�numbers,�AFAICS:<br>
2559<br>
2560*�Fix�scary�bug�causing�mis-identification�of�SSE�stores�vs<br>
2561��loads�and�so�causing�memcheck�to�sometimes�give�nonsense�results<br>
2562��on�SSE�code.<br>
2563<br>
2564*�Add�support�for�the�POSIX�message�queue�system�calls.<br>
2565<br>
2566*�Fix�to�allow�32-bit�Valgrind�to�run�on�AMD64�boxes.��Note:�this�does<br>
2567��NOT�allow�Valgrind�to�work�with�64-bit�executables�-�only�with�32-bit<br>
2568��executables�on�an�AMD64�box.<br>
2569<br>
2570*�At�configure�time,�only�check�whether�linux/mii.h�can�be�processed�<br>
2571��so�that�we�don't�generate�ugly�warnings�by�trying�to�compile�it.<br>
2572<br>
2573*�Add�support�for�POSIX�clocks�and�timers.<br>
2574<br>
2575<br>
2576<br>
2577Developer�(cvs�head)�release�2.1.2�(18�July�2004)<br>
2578~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
25792.1.2�contains�four�months�worth�of�bug�fixes�and�refinements.<br>
2580Although�officially�a�developer�release,�we�believe�it�to�be�stable<br>
2581enough�for�widespread�day-to-day�use.��2.1.2�is�pretty�good,�so�try�it<br>
2582first,�although�there�is�a�chance�it�won't�work.��If�so�then�try�2.0.0<br>
2583and�tell�us�what�went�wrong."��2.1.2�fixes�a�lot�of�problems�present<br>
2584in�2.0.0�and�is�generally�a�much�better�product.<br>
2585<br>
2586Relative�to�2.1.1,�a�large�number�of�minor�problems�with�2.1.1�have<br>
2587been�fixed,�and�so�if�you�use�2.1.1�you�should�try�2.1.2.��Users�of<br>
2588the�last�stable�release,�2.0.0,�might�also�want�to�try�this�release.<br>
2589<br>
2590The�following�bugs,�and�probably�many�more,�have�been�fixed.��These<br>
2591are�listed�at�http://bugs.kde.org.��Reporting�a�bug�for�valgrind�in<br>
2592the�http://bugs.kde.org�is�much�more�likely�to�get�you�a�fix�than<br>
2593mailing�developers�directly,�so�please�continue�to�keep�sending�bugs<br>
2594there.<br>
2595<br>
259676869���Crashes�when�running�any�tool�under�Fedora�Core�2�test1<br>
2597��������This�fixes�the�problem�with�returning�from�a�signal�handler�<br>
2598��������when�VDSOs�are�turned�off�in�FC2.<br>
2599<br>
260069508���java�1.4.2�client�fails�with�erroneous�"stack�size�too�small".<br>
2601��������This�fix�makes�more�of�the�pthread�stack�attribute�related�<br>
2602��������functions�work�properly.��Java�still�doesn't�work�though.<br>
2603<br>
260471906���malloc�alignment�should�be�8,�not�4<br>
2605��������All�memory�returned�by�malloc/new�etc�is�now�at�least<br>
2606��������8-byte�aligned.<br>
2607<br>
260881970���vg_alloc_ThreadState:�no�free�slots�available<br>
2609��������(closed�because�the�workaround�is�simple:�increase<br>
2610���������VG_N_THREADS,�rebuild�and�try�again.)<br>
2611<br>
261278514���Conditional�jump�or�move�depends�on�uninitialized�value(s)<br>
2613��������(a�slight�mishanding�of�FP�code�in�memcheck)<br>
2614<br>
261577952���pThread�Support�(crash)�(due�to�initialisation-ordering�probs)<br>
2616��������(also�85118)<br>
2617<br>
261880942���Addrcheck�wasn't�doing�overlap�checking�as�it�should.<br>
261978048���return�NULL�on�malloc/new�etc�failure,�instead�of�asserting<br>
262073655���operator�new()�override�in�user�.so�files�often�doesn't�get�picked�up<br>
262183060���Valgrind�does�not�handle�native�kernel�AIO<br>
262269872���Create�proper�coredumps�after�fatal�signals<br>
262382026���failure�with�new�glibc�versions:�__libc_*�functions�are�not�exported<br>
262470344���UNIMPLEMENTED�FUNCTION:�tcdrain�<br>
262581297���Cancellation�of�pthread_cond_wait�does�not�require�mutex<br>
262682872���Using�debug�info�from�additional�packages�(wishlist)<br>
262783025���Support�for�ioctls�FIGETBSZ�and�FIBMAP<br>
262883340���Support�for�ioctl�HDIO_GET_IDENTITY<br>
262979714���Support�for�the�semtimedop�system�call.<br>
263077022���Support�for�ioctls�FBIOGET_VSCREENINFO�and�FBIOGET_FSCREENINFO<br>
263182098���hp2ps�ansification�(wishlist)<br>
263283573���Valgrind�SIGSEGV�on�execve<br>
263382999���show�which�cmdline�option�was�erroneous�(wishlist)<br>
263483040���make�valgrind�VPATH�and�distcheck-clean�(wishlist)<br>
263583998���Assertion�`newfd�&gt;�vgPlain_max_fd'�failed�(see�below)<br>
263682722���Unchecked�mmap�in�as_pad�leads�to�mysterious�failures�later<br>
263778958���memcheck�seg�faults�while�running�Mozilla�<br>
263885416���Arguments�with�colon�(e.g.�--logsocket)�ignored<br>
2639<br>
2640<br>
2641Additionally�there�are�the�following�changes,�which�are�not�<br>
2642connected�to�any�bug�report�numbers,�AFAICS:<br>
2643<br>
2644*�Rearranged�address�space�layout�relative�to�2.1.1,�so�that<br>
2645��Valgrind/tools�will�run�out�of�memory�later�than�currently�in�many<br>
2646��circumstances.��This�is�good�news�esp.�for�Calltree.��It�should<br>
2647��be�possible�for�client�programs�to�allocate�over�800MB�of<br>
2648��memory�when�using�memcheck�now.<br>
2649<br>
2650*�Improved�checking�when�laying�out�memory.��Should�hopefully�avoid<br>
2651��the�random�segmentation�faults�that�2.1.1�sometimes�caused.<br>
2652<br>
2653*�Support�for�Fedora�Core�2�and�SuSE�9.1.��Improvements�to�NPTL<br>
2654��support�to�the�extent�that�V�now�works�properly�on�NPTL-only�setups.<br>
2655<br>
2656*�Renamed�the�following�options:<br>
2657��--logfile-fd��--&gt;��--log-fd<br>
2658��--logfile�����--&gt;��--log-file<br>
2659��--logsocket���--&gt;��--log-socket<br>
2660��to�be�consistent�with�each�other�and�other�options�(esp.�--input-fd).<br>
2661<br>
2662*�Add�support�for�SIOCGMIIPHY,�SIOCGMIIREG�and�SIOCSMIIREG�ioctls�and<br>
2663��improve�the�checking�of�other�interface�related�ioctls.<br>
2664<br>
2665*�Fix�building�with�gcc-3.4.1.<br>
2666<br>
2667*�Remove�limit�on�number�of�semaphores�supported.<br>
2668<br>
2669*�Add�support�for�syscalls:�set_tid_address�(258),�acct�(51).<br>
2670<br>
2671*�Support�instruction�"repne�movs"�--�not�official�but�seems�to�occur.<br>
2672<br>
2673*�Implement�an�emulated�soft�limit�for�file�descriptors�in�addition�to<br>
2674��the�current�reserved�area,�which�effectively�acts�as�a�hard�limit.�The<br>
2675��setrlimit�system�call�now�simply�updates�the�emulated�limits�as�best<br>
2676��as�possible�-�the�hard�limit�is�not�allowed�to�move�at�all�and�just<br>
2677��returns�EPERM�if�you�try�and�change�it.��This�should�stop�reductions<br>
2678��in�the�soft�limit�causing�assertions�when�valgrind�tries�to�allocate<br>
2679��descriptors�from�the�reserved�area.<br>
2680��(This�actually�came�from�bug�#83998).<br>
2681<br>
2682*�Major�overhaul�of�Cachegrind�implementation.��First�user-visible�change<br>
2683��is�that�cachegrind.out�files�are�now�typically�90%�smaller�than�they<br>
2684��used�to�be;��code�annotation�times�are�correspondingly�much�smaller.<br>
2685��Second�user-visible�change�is�that�hit/miss�counts�for�code�that�is<br>
2686��unloaded�at�run-time�is�no�longer�dumped�into�a�single�"discard"�pile,<br>
2687��but�accurately�preserved.<br>
2688<br>
2689*�Client�requests�for�telling�valgrind�about�memory�pools.<br>
2690<br>
2691<br>
2692<br>
2693Developer�(cvs�head)�release�2.1.1�(12�March�2004)<br>
2694~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
26952.1.1�contains�some�internal�structural�changes�needed�for�V's<br>
2696long-term�future.��These�don't�affect�end-users.��Most�notable<br>
2697user-visible�changes�are:<br>
2698<br>
2699*�Greater�isolation�between�Valgrind�and�the�program�being�run,�so<br>
2700��the�program�is�less�likely�to�inadvertently�kill�Valgrind�by<br>
2701��doing�wild�writes.<br>
2702<br>
2703*�Massif:�a�new�space�profiling�tool.��Try�it!��It's�cool,�and�it'll<br>
2704��tell�you�in�detail�where�and�when�your�C/C++�code�is�allocating�heap.<br>
2705��Draws�pretty�.ps�pictures�of�memory�use�against�time.��A�potentially<br>
2706��powerful�tool�for�making�sense�of�your�program's�space�use.<br>
2707<br>
2708*�Fixes�for�many�bugs,�including�support�for�more�SSE2/SSE3�instructions,<br>
2709��various�signal/syscall�things,�and�various�problems�with�debug<br>
2710��info�readers.<br>
2711<br>
2712*�Support�for�glibc-2.3.3�based�systems.<br>
2713<br>
2714We�are�now�doing�automatic�overnight�build-and-test�runs�on�a�variety<br>
2715of�distros.��As�a�result,�we�believe�2.1.1�builds�and�runs�on:<br>
2716Red�Hat�7.2,�7.3,�8.0,�9,�Fedora�Core�1,�SuSE�8.2,�SuSE�9.<br>
2717<br>
2718<br>
2719The�following�bugs,�and�probably�many�more,�have�been�fixed.��These<br>
2720are�listed�at�http://bugs.kde.org.��Reporting�a�bug�for�valgrind�in<br>
2721the�http://bugs.kde.org�is�much�more�likely�to�get�you�a�fix�than<br>
2722mailing�developers�directly,�so�please�continue�to�keep�sending�bugs<br>
2723there.<br>
2724<br>
272569616���glibc�2.3.2�w/NPTL�is�massively�different�than�what�valgrind�expects�<br>
272669856���I�don't�know�how�to�instrument�MMXish�stuff�(Helgrind)<br>
272773892���valgrind�segfaults�starting�with�Objective-C�debug�info�<br>
2728��������(fix�for�S-type�stabs)<br>
272973145���Valgrind�complains�too�much�about�close(&lt;reserved�fd&gt;)�<br>
273073902���Shadow�memory�allocation�seems�to�fail�on�RedHat�8.0�<br>
273168633���VG_N_SEMAPHORES�too�low�(V�itself�was�leaking�semaphores)<br>
273275099���impossible�to�trace�multiprocess�programs�<br>
273376839���the�`impossible'�happened:�disInstr:�INT�but�not�0x80�!�<br>
273476762���vg_to_ucode.c:3748�(dis_push_segreg):�Assertion�`sz�==�4'�failed.�<br>
273576747���cannot�include�valgrind.h�in�c++�program�<br>
273676223���parsing�B(3,10)�gave�NULL�type�=&gt;�impossible�happens�<br>
273775604���shmdt�handling�problem�<br>
273876416���Problems�with�gcc�3.4�snap�20040225�<br>
273975614���using�-gstabs�when�building�your�programs�the�`impossible'�happened<br>
274075787���Patch�for�some�CDROM�ioctls�CDORM_GET_MCN,�CDROM_SEND_PACKET,<br>
274175294���gcc�3.4�snapshot's�libstdc++�have�unsupported�instructions.�<br>
2742��������(REP�RET)<br>
274373326���vg_symtab2.c:272�(addScopeRange):�Assertion�`range-&gt;size�&gt;�0'�failed.�<br>
274472596���not�recognizing�__libc_malloc�<br>
274569489���Would�like�to�attach�ddd�to�running�program�<br>
274672781���Cachegrind�crashes�with�kde�programs�<br>
274773055���Illegal�operand�at�DXTCV11CompressBlockSSE2�(more�SSE�opcodes)<br>
274873026���Descriptor�leak�check�reports�port�numbers�wrongly�<br>
274971705���README_MISSING_SYSCALL_OR_IOCTL�out�of�date�<br>
275072643���Improve�support�for�SSE/SSE2�instructions�<br>
275172484���valgrind�leaves�it's�own�signal�mask�in�place�when�execing�<br>
275272650���Signal�Handling�always�seems�to�restart�system�calls�<br>
275372006���The�mmap�system�call�turns�all�errors�in�ENOMEM�<br>
275471781���gdb�attach�is�pretty�useless�<br>
275571180���unhandled�instruction�bytes:�0xF�0xAE�0x85�0xE8�<br>
275669886���writes�to�zero�page�cause�valgrind�to�assert�on�exit�<br>
275771791���crash�when�valgrinding�gimp�1.3�(stabs�reader�problem)<br>
275869783���unhandled�syscall:�218�<br>
275969782���unhandled�instruction�bytes:�0x66�0xF�0x2B�0x80�<br>
276070385���valgrind�fails�if�the�soft�file�descriptor�limit�is�less�<br>
2761��������than�about�828<br>
276269529���"rep;�nop"�should�do�a�yield�<br>
276370827���programs�with�lots�of�shared�libraries�report�"mmap�failed"�<br>
2764��������for�some�of�them�when�reading�symbols�<br>
276571028���glibc's�strnlen�is�optimised�enough�to�confuse�valgrind�<br>
2766<br>
2767<br>
2768<br>
2769<br>
2770Unstable�(cvs�head)�release�2.1.0�(15�December�2003)<br>
2771~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
2772For�whatever�it's�worth,�2.1.0�actually�seems�pretty�darn�stable�to�me<br>
2773(Julian).��It�looks�eminently�usable,�and�given�that�it�fixes�some<br>
2774significant�bugs,�may�well�be�worth�using�on�a�day-to-day�basis.<br>
27752.1.0�is�known�to�build�and�pass�regression�tests�on:�SuSE�9,�SuSE<br>
27768.2,�RedHat�8.<br>
2777<br>
27782.1.0�most�notably�includes�Jeremy�Fitzhardinge's�complete�overhaul�of<br>
2779handling�of�system�calls�and�signals,�and�their�interaction�with<br>
2780threads.��In�general,�the�accuracy�of�the�system�call,�thread�and<br>
2781signal�simulations�is�much�improved.��Specifically:<br>
2782<br>
2783-�Blocking�system�calls�behave�exactly�as�they�do�when�running<br>
2784��natively�(not�on�valgrind).��That�is,�if�a�syscall�blocks�only�the<br>
2785��calling�thread�when�running�natively,�than�it�behaves�the�same�on<br>
2786��valgrind.��No�more�mysterious�hangs�because�V�doesn't�know�that�some<br>
2787��syscall�or�other,�should�block�only�the�calling�thread.<br>
2788<br>
2789-�Interrupted�syscalls�should�now�give�more�faithful�results.<br>
2790<br>
2791-�Finally,�signal�contexts�in�signal�handlers�are�supported.��As�a<br>
2792��result,�konqueror�on�SuSE�9�no�longer�segfaults�when�notified�of<br>
2793��file�changes�in�directories�it�is�watching.<br>
2794<br>
2795Other�changes:<br>
2796<br>
2797-�Robert�Walsh's�file�descriptor�leakage�checks.��When�enabled,<br>
2798��Valgrind�will�print�out�a�list�of�open�file�descriptors�on<br>
2799��exit.��Along�with�each�file�descriptor,�Valgrind�prints�out�a�stack<br>
2800��backtrace�of�where�the�file�was�opened�and�any�details�relating�to�the<br>
2801��file�descriptor�such�as�the�file�name�or�socket�details.<br>
2802��To�use,�give:�--track-fds=yes<br>
2803<br>
2804-�Implemented�a�few�more�SSE/SSE2�instructions.<br>
2805<br>
2806-�Less�crud�on�the�stack�when�you�do�'where'�inside�a�GDB�attach.<br>
2807<br>
2808-�Fixed�the�following�bugs:<br>
2809��68360:�Valgrind�does�not�compile�against�2.6.0-testX�kernels<br>
2810��68525:�CVS�head�doesn't�compile�on�C90�compilers<br>
2811��68566:�pkgconfig�support�(wishlist)<br>
2812��68588:�Assertion�`sz�==�4'�failed�in�vg_to_ucode.c�(disInstr)<br>
2813��69140:�valgrind�not�able�to�explicitly�specify�a�path�to�a�binary.�<br>
2814��69432:�helgrind�asserts�encountering�a�MutexErr�when�there�are�<br>
2815���������EraserErr�suppressions<br>
2816<br>
2817-�Increase�the�max�size�of�the�translation�cache�from�200k�average�bbs<br>
2818��to�300k�average�bbs.��Programs�on�the�size�of�OOo�(680m17)�are<br>
2819��thrashing�the�cache�at�the�smaller�size,�creating�large�numbers�of<br>
2820��retranslations�and�wasting�significant�time�as�a�result.<br>
2821<br>
2822<br>
2823<br>
2824Stable�release�2.0.0�(5�Nov�2003)<br>
2825~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
2826<br>
28272.0.0�improves�SSE/SSE2�support,�fixes�some�minor�bugs,�and<br>
2828improves�support�for�SuSE�9�and�the�Red�Hat�"Severn"�beta.<br>
2829<br>
2830-�Further�improvements�to�SSE/SSE2�support.��The�entire�test�suite�of<br>
2831��the�GNU�Scientific�Library�(gsl-1.4)�compiled�with�Intel�Icc�7.1<br>
2832��20030307Z�'-g�-O�-xW'�now�works.��I�think�this�gives�pretty�good<br>
2833��coverage�of�SSE/SSE2�floating�point�instructions,�or�at�least�the<br>
2834��subset�emitted�by�Icc.<br>
2835<br>
2836-�Also�added�support�for�the�following�instructions:<br>
2837����MOVNTDQ�UCOMISD�UNPCKLPS�UNPCKHPS�SQRTSS<br>
2838����PUSH/POP�%{FS,GS},�and�PUSH�%CS�(Nb:�there�is�no�POP�%CS).<br>
2839<br>
2840-�CFI�support�for�GDB�version�6.��Needed�to�enable�newer�GDBs<br>
2841��to�figure�out�where�they�are�when�using�--gdb-attach=yes.<br>
2842<br>
2843-�Fix�this:<br>
2844������mc_translate.c:1091�(memcheck_instrument):�Assertion<br>
2845������`u_in-&gt;size�==�4�||�u_in-&gt;size�==�16'�failed.<br>
2846<br>
2847-�Return�an�error�rather�than�panicing�when�given�a�bad�socketcall.<br>
2848<br>
2849-�Fix�checking�of�syscall�rt_sigtimedwait().<br>
2850<br>
2851-�Implement�__NR_clock_gettime�(syscall�265).��Needed�on�Red�Hat�Severn.<br>
2852<br>
2853-�Fixed�bug�in�overlap�check�in�strncpy()�--�it�was�assuming�the�src�was�'n'<br>
2854��bytes�long,�when�it�could�be�shorter,�which�could�cause�false<br>
2855��positives.<br>
2856<br>
2857-�Support�use�of�select()�for�very�large�numbers�of�file�descriptors.<br>
2858<br>
2859-�Don't�fail�silently�if�the�executable�is�statically�linked,�or�is<br>
2860��setuid/setgid.�Print�an�error�message�instead.<br>
2861<br>
2862-�Support�for�old�DWARF-1�format�line�number�info.<br>
2863<br>
2864<br>
2865<br>
2866Snapshot�20031012�(12�October�2003)<br>
2867~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
2868<br>
2869Three�months�worth�of�bug�fixes,�roughly.��Most�significant�single<br>
2870change�is�improved�SSE/SSE2�support,�mostly�thanks�to�Dirk�Mueller.<br>
2871<br>
287220031012�builds�on�Red�Hat�Fedora�("Severn")�but�doesn't�really�work<br>
2873(curiosly,�mozilla�runs�OK,�but�a�modest�"ls�-l"�bombs).��I�hope�to<br>
2874get�a�working�version�out�soon.��It�may�or�may�not�work�ok�on�the<br>
2875forthcoming�SuSE�9;�I�hear�positive�noises�about�it�but�haven't�been<br>
2876able�to�verify�this�myself�(not�until�I�get�hold�of�a�copy�of�9).<br>
2877<br>
2878A�detailed�list�of�changes,�in�no�particular�order:<br>
2879<br>
2880-�Describe�--gen-suppressions�in�the�FAQ.<br>
2881<br>
2882-�Syscall�__NR_waitpid�supported.<br>
2883<br>
2884-�Minor�MMX�bug�fix.<br>
2885<br>
2886-�-v�prints�program's�argv[]�at�startup.<br>
2887<br>
2888-�More�glibc-2.3�suppressions.<br>
2889<br>
2890-�Suppressions�for�stack�underrun�bug(s)�in�the�c++�support�library<br>
2891��distributed�with�Intel�Icc�7.0.<br>
2892<br>
2893-�Fix�problems�reading�/proc/self/maps.<br>
2894<br>
2895-�Fix�a�couple�of�messages�that�should�have�been�suppressed�by�-q,�<br>
2896��but�weren't.<br>
2897<br>
2898-�Make�Addrcheck�understand�"Overlap"�suppressions.<br>
2899<br>
2900-�At�startup,�check�if�program�is�statically�linked�and�bail�out�if�so.<br>
2901<br>
2902-�Cachegrind:�Auto-detect�Intel�Pentium-M,�also�VIA�Nehemiah<br>
2903<br>
2904-�Memcheck/addrcheck:�minor�speed�optimisations<br>
2905<br>
2906-�Handle�syscall�__NR_brk�more�correctly�than�before.<br>
2907<br>
2908-�Fixed�incorrect�allocate/free�mismatch�errors�when�using<br>
2909��operator�new(unsigned,�std::nothrow_t�const&amp;)<br>
2910��operator�new[](unsigned,�std::nothrow_t�const&amp;)<br>
2911<br>
2912-�Support�POSIX�pthread�spinlocks.<br>
2913<br>
2914-�Fixups�for�clean�compilation�with�gcc-3.3.1.<br>
2915<br>
2916-�Implemented�more�opcodes:�<br>
2917����-�push�%es<br>
2918����-�push�%ds<br>
2919����-�pop�%es<br>
2920����-�pop�%ds<br>
2921����-�movntq<br>
2922����-�sfence<br>
2923����-�pshufw<br>
2924����-�pavgb<br>
2925����-�ucomiss<br>
2926����-�enter<br>
2927����-�mov�imm32,�%esp<br>
2928����-�all�"in"�and�"out"�opcodes<br>
2929����-�inc/dec�%esp<br>
2930����-�A�whole�bunch�of�SSE/SSE2�instructions<br>
2931<br>
2932-�Memcheck:�don't�bomb�on�SSE/SSE2�code.<br>
2933<br>
2934<br>
2935Snapshot�20030725�(25�July�2003)<br>
2936~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
2937<br>
2938Fixes�some�minor�problems�in�20030716.<br>
2939<br>
2940-�Fix�bugs�in�overlap�checking�for�strcpy/memcpy�etc.<br>
2941<br>
2942-�Do�overlap�checking�with�Addrcheck�as�well�as�Memcheck.<br>
2943<br>
2944-�Fix�this:<br>
2945������Memcheck:�the�`impossible'�happened:<br>
2946������get_error_name:�unexpected�type<br>
2947<br>
2948-�Install�headers�needed�to�compile�new�skins.<br>
2949<br>
2950-�Remove�leading�spaces�and�colon�in�the�LD_LIBRARY_PATH�/�LD_PRELOAD<br>
2951��passed�to�non-traced�children.<br>
2952<br>
2953-�Fix�file�descriptor�leak�in�valgrind-listener.<br>
2954<br>
2955-�Fix�longstanding�bug�in�which�the�allocation�point�of�a�<br>
2956��block�resized�by�realloc�was�not�correctly�set.��This�may<br>
2957��have�caused�confusing�error�messages.<br>
2958<br>
2959<br>
2960Snapshot�20030716�(16�July�2003)<br>
2961~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
2962<br>
296320030716�is�a�snapshot�of�our�current�CVS�head�(development)�branch.<br>
2964This�is�the�branch�which�will�become�valgrind-2.0.��It�contains<br>
2965significant�enhancements�over�the�1.9.X�branch.<br>
2966<br>
2967Despite�this�being�a�snapshot�of�the�CVS�head,�it�is�believed�to�be<br>
2968quite�stable�--�at�least�as�stable�as�1.9.6�or�1.0.4,�if�not�more�so<br>
2969--�and�therefore�suitable�for�widespread�use.��Please�let�us�know�asap<br>
2970if�it�causes�problems�for�you.<br>
2971<br>
2972Two�reasons�for�releasing�a�snapshot�now�are:<br>
2973<br>
2974-�It's�been�a�while�since�1.9.6,�and�this�snapshot�fixes<br>
2975��various�problems�that�1.9.6�has�with�threaded�programs�<br>
2976��on�glibc-2.3.X�based�systems.<br>
2977<br>
2978-�So�as�to�make�available�improvements�in�the�2.0�line.<br>
2979<br>
2980Major�changes�in�20030716,�as�compared�to�1.9.6:<br>
2981<br>
2982-�More�fixes�to�threading�support�on�glibc-2.3.1�and�2.3.2-based<br>
2983��systems�(SuSE�8.2,�Red�Hat�9).��If�you�have�had�problems<br>
2984��with�inconsistent/illogical�behaviour�of�errno,�h_errno�or�the�DNS<br>
2985��resolver�functions�in�threaded�programs,�20030716�should�improve<br>
2986��matters.��This�snapshot�seems�stable�enough�to�run�OpenOffice.org<br>
2987��1.1rc�on�Red�Hat�7.3,�SuSE�8.2�and�Red�Hat�9,�and�that's�a�big<br>
2988��threaded�app�if�ever�I�saw�one.<br>
2989<br>
2990-�Automatic�generation�of�suppression�records;�you�no�longer<br>
2991��need�to�write�them�by�hand.��Use�--gen-suppressions=yes.<br>
2992<br>
2993-�strcpy/memcpy/etc�check�their�arguments�for�overlaps,�when<br>
2994��running�with�the�Memcheck�or�Addrcheck�skins.<br>
2995<br>
2996-�malloc_usable_size()�is�now�supported.<br>
2997<br>
2998-�new�client�requests:<br>
2999����-�VALGRIND_COUNT_ERRORS,�VALGRIND_COUNT_LEAKS:�<br>
3000������useful�with�regression�testing<br>
3001����-�VALGRIND_NON_SIMD_CALL[0123]:�for�running�arbitrary�functions�<br>
3002������on�real�CPU�(use�with�caution!)<br>
3003<br>
3004-�The�GDB�attach�mechanism�is�more�flexible.��Allow�the�GDB�to<br>
3005��be�run�to�be�specified�by�--gdb-path=/path/to/gdb,�and�specify<br>
3006��which�file�descriptor�V�will�read�its�input�from�with<br>
3007��--input-fd=&lt;number&gt;.<br>
3008<br>
3009-�Cachegrind�gives�more�accurate�results�(wasn't�tracking�instructions�in<br>
3010��malloc()�and�friends�previously,�is�now).<br>
3011<br>
3012-�Complete�support�for�the�MMX�instruction�set.<br>
3013<br>
3014-�Partial�support�for�the�SSE�and�SSE2�instruction�sets.��Work�for�this<br>
3015��is�ongoing.��About�half�the�SSE/SSE2�instructions�are�done,�so<br>
3016��some�SSE�based�programs�may�work.��Currently�you�need�to�specify<br>
3017��--skin=addrcheck.��Basically�not�suitable�for�real�use�yet.<br>
3018<br>
3019-�Significant�speedups�(10%-20%)�for�standard�memory�checking.<br>
3020<br>
3021-�Fix�assertion�failure�in�pthread_once().<br>
3022<br>
3023-�Fix�this:<br>
3024����valgrind:�vg_intercept.c:598�(vgAllRoadsLeadToRome_select):�<br>
3025��������������Assertion�`ms_end�&gt;=�ms_now'�failed.<br>
3026<br>
3027-�Implement�pthread_mutexattr_setpshared.<br>
3028<br>
3029-�Understand�Pentium�4�branch�hints.��Also�implemented�a�couple�more<br>
3030��obscure�x86�instructions.<br>
3031<br>
3032-�Lots�of�other�minor�bug�fixes.<br>
3033<br>
3034-�We�have�a�decent�regression�test�system,�for�the�first�time.<br>
3035��This�doesn't�help�you�directly,�but�it�does�make�it�a�lot�easier<br>
3036��for�us�to�track�the�quality�of�the�system,�especially�across<br>
3037��multiple�linux�distributions.��<br>
3038<br>
3039��You�can�run�the�regression�tests�with�'make�regtest'�after�'make<br>
3040��install'�completes.��On�SuSE�8.2�and�Red�Hat�9�I�get�this:<br>
3041�<br>
3042�����==�84�tests,�0�stderr�failures,�0�stdout�failures�==<br>
3043<br>
3044��On�Red�Hat�8,�I�get�this:<br>
3045<br>
3046�����==�84�tests,�2�stderr�failures,�1�stdout�failure�==<br>
3047�����corecheck/tests/res_search���������������(stdout)<br>
3048�����memcheck/tests/sigaltstack���������������(stderr)<br>
3049<br>
3050��sigaltstack�is�probably�harmless.��res_search�doesn't�work<br>
3051��on�R�H�8�even�running�natively,�so�I'm�not�too�worried.���<br>
3052<br>
3053��On�Red�Hat�7.3,�a�glibc-2.2.5�system,�I�get�these�harmless�failures:<br>
3054<br>
3055�����==�84�tests,�2�stderr�failures,�1�stdout�failure�==<br>
3056�����corecheck/tests/pth_atfork1��������������(stdout)<br>
3057�����corecheck/tests/pth_atfork1��������������(stderr)<br>
3058�����memcheck/tests/sigaltstack���������������(stderr)<br>
3059<br>
3060��You�need�to�run�on�a�PII�system,�at�least,�since�some�tests<br>
3061��contain�P6-specific�instructions,�and�the�test�machine�needs<br>
3062��access�to�the�internet�so�that�corecheck/tests/res_search<br>
3063��(a�test�that�the�DNS�resolver�works)�can�function.<br>
3064<br>
3065As�ever,�thanks�for�the�vast�amount�of�feedback�:)�and�bug�reports�:(<br>
3066We�may�not�answer�all�messages,�but�we�do�at�least�look�at�all�of<br>
3067them,�and�tend�to�fix�the�most�frequently�reported�bugs.<br>
3068<br>
3069<br>
3070<br>
3071Version�1.9.6�(7�May�2003�or�thereabouts)<br>
3072~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
3073<br>
3074Major�changes�in�1.9.6:<br>
3075<br>
3076-�Improved�threading�support�for�glibc�&gt;=�2.3.2�(SuSE�8.2,<br>
3077��RedHat�9,�to�name�but�two�...)��It�turned�out�that�1.9.5<br>
3078��had�problems�with�threading�support�on�glibc�&gt;=�2.3.2,<br>
3079��usually�manifested�by�threaded�programs�deadlocking�in�system�calls,<br>
3080��or�running�unbelievably�slowly.��Hopefully�these�are�fixed�now.��1.9.6<br>
3081��is�the�first�valgrind�which�gives�reasonable�support�for<br>
3082��glibc-2.3.2.��Also�fixed�a�2.3.2�problem�with�pthread_atfork().<br>
3083<br>
3084-�Majorly�expanded�FAQ.txt.��We've�added�workarounds�for�all<br>
3085��common�problems�for�which�a�workaround�is�known.<br>
3086<br>
3087Minor�changes�in�1.9.6:<br>
3088<br>
3089-�Fix�identification�of�the�main�thread's�stack.��Incorrect<br>
3090��identification�of�it�was�causing�some�on-stack�addresses�to�not�get<br>
3091��identified�as�such.��This�only�affected�the�usefulness�of�some�error<br>
3092��messages;�the�correctness�of�the�checks�made�is�unchanged.<br>
3093<br>
3094-�Support�for�kernels�&gt;=�2.5.68.<br>
3095<br>
3096-�Dummy�implementations�of�__libc_current_sigrtmin,�<br>
3097��__libc_current_sigrtmax�and�__libc_allocate_rtsig,�hopefully<br>
3098��good�enough�to�keep�alive�programs�which�previously�died�for�lack�of<br>
3099��them.<br>
3100<br>
3101-�Fix�bug�in�the�VALGRIND_DISCARD_TRANSLATIONS�client�request.<br>
3102<br>
3103-�Fix�bug�in�the�DWARF2�debug�line�info�loader,�when�instructions�<br>
3104��following�each�other�have�source�lines�far�from�each�other�<br>
3105��(e.g.�with�inlined�functions).<br>
3106<br>
3107-�Debug�info�reading:�read�symbols�from�both�"symtab"�and�"dynsym"<br>
3108��sections,�rather�than�merely�from�the�one�that�comes�last�in�the<br>
3109��file.<br>
3110<br>
3111-�New�syscall�support:�prctl(),�creat(),�lookup_dcookie().<br>
3112<br>
3113-�When�checking�calls�to�accept(),�recvfrom(),�getsocketopt(),<br>
3114��don't�complain�if�buffer�values�are�NULL.<br>
3115<br>
3116-�Try�and�avoid�assertion�failures�in<br>
3117��mash_LD_PRELOAD_and_LD_LIBRARY_PATH.<br>
3118<br>
3119-�Minor�bug�fixes�in�cg_annotate.<br>
3120<br>
3121<br>
3122<br>
3123Version�1.9.5�(7�April�2003)<br>
3124~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
3125<br>
3126It�occurs�to�me�that�it�would�be�helpful�for�valgrind�users�to�record<br>
3127in�the�source�distribution�the�changes�in�each�release.��So�I�now<br>
3128attempt�to�mend�my�errant�ways�:-)��Changes�in�this�and�future�releases<br>
3129will�be�documented�in�the�NEWS�file�in�the�source�distribution.<br>
3130<br>
3131Major�changes�in�1.9.5:<br>
3132<br>
3133-�(Critical�bug�fix):�Fix�a�bug�in�the�FPU�simulation.��This�was<br>
3134��causing�some�floating�point�conditional�tests�not�to�work�right.<br>
3135��Several�people�reported�this.��If�you�had�floating�point�code�which<br>
3136��didn't�work�right�on�1.9.1�to�1.9.4,�it's�worth�trying�1.9.5.<br>
3137<br>
3138-�Partial�support�for�Red�Hat�9.��RH9�uses�the�new�Native�Posix�<br>
3139��Threads�Library�(NPTL),�instead�of�the�older�LinuxThreads.��<br>
3140��This�potentially�causes�problems�with�V�which�will�take�some<br>
3141��time�to�correct.��In�the�meantime�we�have�partially�worked�around<br>
3142��this,�and�so�1.9.5�works�on�RH9.��Threaded�programs�still�work,<br>
3143��but�they�may�deadlock,�because�some�system�calls�(accept,�read,<br>
3144��write,�etc)�which�should�be�nonblocking,�in�fact�do�block.��This<br>
3145��is�a�known�bug�which�we�are�looking�into.<br>
3146<br>
3147��If�you�can,�your�best�bet�(unfortunately)�is�to�avoid�using�<br>
3148��1.9.5�on�a�Red�Hat�9�system,�or�on�any�NPTL-based�distribution.<br>
3149��If�your�glibc�is�2.3.1�or�earlier,�you're�almost�certainly�OK.<br>
3150<br>
3151Minor�changes�in�1.9.5:<br>
3152<br>
3153-�Added�some�#errors�to�valgrind.h�to�ensure�people�don't�include<br>
3154��it�accidentally�in�their�sources.��This�is�a�change�from�1.0.X<br>
3155��which�was�never�properly�documented.��The�right�thing�to�include<br>
3156��is�now�memcheck.h.��Some�people�reported�problems�and�strange<br>
3157��behaviour�when�(incorrectly)�including�valgrind.h�in�code�with�<br>
3158��1.9.1�--�1.9.4.��This�is�no�longer�possible.<br>
3159<br>
3160-�Add�some�__extension__�bits�and�pieces�so�that�gcc�configured<br>
3161��for�valgrind-checking�compiles�even�with�-Werror.��If�you<br>
3162��don't�understand�this,�ignore�it.��Of�interest�to�gcc�developers<br>
3163��only.<br>
3164<br>
3165-�Removed�a�pointless�check�which�caused�problems�interworking�<br>
3166��with�Clearcase.��V�would�complain�about�shared�objects�whose<br>
3167��names�did�not�end�".so",�and�refuse�to�run.��This�is�now�fixed.<br>
3168��In�fact�it�was�fixed�in�1.9.4�but�not�documented.<br>
3169<br>
3170-�Fixed�a�bug�causing�an�assertion�failure�of�"waiters�==�1"<br>
3171��somewhere�in�vg_scheduler.c,�when�running�large�threaded�apps,<br>
3172��notably�MySQL.<br>
3173<br>
3174-�Add�support�for�the�munlock�system�call�(124).<br>
3175<br>
3176Some�comments�about�future�releases:<br>
3177<br>
31781.9.5�is,�we�hope,�the�most�stable�Valgrind�so�far.��It�pretty�much<br>
3179supersedes�the�1.0.X�branch.��If�you�are�a�valgrind�packager,�please<br>
3180consider�making�1.9.5�available�to�your�users.��You�can�regard�the<br>
31811.0.X�branch�as�obsolete:�1.9.5�is�stable�and�vastly�superior.��There<br>
3182are�no�plans�at�all�for�further�releases�of�the�1.0.X�branch.<br>
3183<br>
3184If�you�want�a�leading-edge�valgrind,�consider�building�the�cvs�head<br>
3185(from�SourceForge),�or�getting�a�snapshot�of�it.��Current�cool�stuff<br>
3186going�in�includes�MMX�support�(done);�SSE/SSE2�support�(in�progress),<br>
3187a�significant�(10-20%)�performance�improvement�(done),�and�the�usual<br>
3188large�collection�of�minor�changes.��Hopefully�we�will�be�able�to<br>
3189improve�our�NPTL�support,�but�no�promises.<br>
3190<br>
3191<br>
3192����</p></div>
3193</div>
3194<div>
3195<br><table class="nav" width="100%" cellspacing="3" cellpadding="2" border="0" summary="Navigation footer">
3196<tr>
3197<td rowspan="2" width="40%" align="left">
3198<a accesskey="p" href="dist.authors.html">&lt;&lt;�1.�AUTHORS</a>�</td>
3199<td width="20%" align="center"><a accesskey="u" href="dist.html">Up</a></td>
3200<td rowspan="2" width="40%" align="right">�<a accesskey="n" href="dist.readme.html">3.�README�&gt;&gt;</a>
3201</td>
3202</tr>
3203<tr><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td></tr>
3204</table>
3205</div>
3206</body>
3207</html>
3208