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->IR:�0x48�0xF�0xAE�0x4�(proper�FX{SAVE,RSTOR}�support)<br> 45210481��vex�amd64->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->IR:�0x66�0xF�0x3A�0x9�0xDB�0x0�(ROUNDPD)<br> 58255966��Slowness�when�using�mempool�annotations<br> 59256387��vex�x86->IR:�0xD4�0xA�0x2�0x7�(AAD�and�AAM)<br> 60256600��super-optimized�strcasecmp()�false�positive<br> 61256669��vex�amd64->IR:�Unhandled�LOOPNEL�insn�on�amd64<br> 62256968��(SSE4.x)�vex�amd64->IR:�0x66�0xF�0x38�0x10�0xD3�0x66�(BLENDVPx)<br> 63257011��(SSE4.x)�vex�amd64->IR:�0x66�0xF�0x3A�0xE�0xFD�0xA0�(PBLENDW)<br> 64257063��(SSE4.x)�vex�amd64->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�<valgrind/valgrind.h>,<br> 241��<valgrind/memcheck.h>�and�<valgrind/drd.h>�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->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->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->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�<title></title>�elements�<br> 323232793��==�202315<br> 324235642��[PATCH]�syswrap-linux.c:�support�evdev�EVIOCG*�ioctls�<br> 325236546��vex�x86->IR:�0x66�0xF�0x3A�0xA<br> 326237202��vex�amd64->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->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�<preamble>�not�escape�the�<br> 358��������xml�char,�eg�'<','&','>'<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->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�<valgrind/valgrind.h>).�An�alternative�for�these�two�macros�is<br> 676����the�new�client�request�VG_USERREQ__DRD_CLEAN_MEMORY�(defined�in<br> 677����<valgrind/drd.h>).<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)/<platform>/libmpiwrap.so�to<br> 781������$(INSTALL)/libmpiwrap-<platform>.so.<br> 782<br> 783����*�For�people�who�distribute�standalone�Valgrind�tools,�the<br> 784������installed�libraries�such�as�$(INSTALL)/<platform>/libcoregrind.a<br> 785������have�moved�to�$(INSTALL)/libcoregrind-<platform>.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->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>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->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->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->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->sg[p->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->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�&&�--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->IR:�0x82�...<br> 1156��172563��amd64->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->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->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]->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->IR:�0xF�0xAE�(FXRSTOR)<br> 1224158525��==126389<br> 1225152818��vex�x86->IR:�0xF3�0xAC�(repz�lodsb)�<br> 1226153196��vex�x86->IR:�0xF2�0xA6�(repnz�cmpsb)�<br> 1227155011��vex�x86->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->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�--<pid><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=<hexnum>�and<br> 1368��--free-fill=<hexnum>�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->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->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->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->curr_space�>=�-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->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->curr_space�>=�-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�>�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->IR:�0x27�0x66�0x89�0x45�(daa)�<br> 1455��152818��vex�x86->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=<patt>�limit�debuginfo�tracing�to�obj�name�<patt><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?->IR:�some�kind�of�VMX�prefetch�(dstt)<br> 1516129968���amd64->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->IR:�0xD7�0x8A�0xE0�0xD0�(xlat)<br> 1526125959���==135012<br> 1527126147���x86->IR:�0xF2�0xA5�0xF�0x77�(repne�movsw)<br> 1528136650���amd64->IR:�0xC2�0x8�0x0<br> 1529135421���x86->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�>=�4.1<br> 1548137493���x86->IR:�recent�binutils�no-ops<br> 1549137714���x86->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->IR:�mfspr�268/269�instructions�not�handled<br> 1556n-i-bz���ppc32->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->IR:�fisttp�(SSE3)<br> 1601117172���FUTEX_WAKE�does�not�use�uaddr2<br> 1602124039���Lacks�support�for�VKI_[GP]IO_UNIMAP*<br> 1603127521���amd64->IR:�0xF0�0x48�0xF�0xC7�(cmpxchg8b)<br> 1604128917���amd64->IR:�0x66�0xF�0xF6�0xC4�(psadbw,SSE2)<br> 1605129246���JJ:�ppc32/ppc64�syscalls,�w/�patch<br> 1606129358���x86->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->IR:�unhandled�instruction�"pushfq"<br> 1612131481:��(HINT_NOP)�vex�x86->IR:�0xF�0x1F�0x0�0xF<br> 1613131298���==131481<br> 1614132146���Programs�with�long�sequences�of�bswap[l,q]s<br> 1615132918���vex�amd64->IR:�0xD9�0xF8�(fprem)<br> 1616132813���Assertion�at�priv/guest-x86/toIR.c:652�fails<br> 1617133051���'cfsi->len�>�0�&&�cfsi->len�<�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->IR:�0x48�0xF�0xC5�0xC0�(pextrw?)<br> 1629133694���aspacem�assertion:�aspacem_minAddr�<=�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?->IR:�some�kind�of�VMX�prefetch�(dstt)<br> 1644129968���amd64->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��-->�MAKE_MEM_NOACCESS<br> 1774����MAKE_WRITABLE��-->�MAKE_MEM_UNDEFINED<br> 1775����MAKE_READABLE��-->�MAKE_MEM_DEFINED<br> 1776<br> 1777����CHECK_WRITABLE�-->�CHECK_MEM_IS_ADDRESSABLE<br> 1778����CHECK_READABLE�-->�CHECK_MEM_IS_DEFINED<br> 1779����CHECK_DEFINED��-->�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->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->IR:�0xF�0xE�0x48�0x85�(femms)<br> 1815124528���FATAL:�aspacem�assertion�failed:�segment_is_sane<br> 1816124697���vex�x86->IR:�0xF�0x70�0xC9�0x0�(pshufw)<br> 1817124892���vex�x86->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->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->IR:�0x66�0xF�0xA3�0x2�(btw�etc)<br> 1827125651���amd64->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->IR:�popw�mem<br> 1832126583���amd64->IR:�0x48�0xF�0xA4�0xC2�(shld�$1,%rax,%rdx)<br> 1833126668���amd64->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.<pid>"�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->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->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->IR:�(pmaddwd):�0x66�0xF�0xF5�0xC7<br> 2026114366��vex�amd64�cannnot�handle�__asm__(�"fninit"�)<br> 2027114412��vex�amd64->IR:�0xF�0xAD�0xC2�0xD3�(128-bit�shift,�shrdq?)<br> 2028114455��vex�amd64->IR:�0xF�0xAC�0xD0�0x1�(also�shrdq)<br> 2029115590:�amd64->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->IR:�0x41�0xF�0xAB�(more�BT{,S,R,C}�fun�n�games)<br> 2038111748��vex�amd64->IR:�0xDD�0xE2�(fucom)<br> 2039111785��make�fails�if�CC�contains�spaces<br> 2040111829��vex�x86->IR:�sbb�AL,�Ib<br> 2041111851��vex�x86->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->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->IR:�fucomp�(0xDD�0xE9)<br> 2054114196��vex�x86->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�>�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�<unique>�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->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->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->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->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->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->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�&�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�&�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->size�>�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->sigqueue_head�!=�tst->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�&�((1�<<�12)-1...<br> 2446101173� Assertion�`recDepth�>=�0�&&�recDepth�<�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->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�>�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��-->��--log-fd<br> 2658��--logfile�����-->��--log-file<br> 2659��--logsocket���-->��--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(<reserved�fd>)�<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�=>�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->size�>�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->size�==�4�||�u_in->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&)<br> 2910��operator�new[](unsigned,�std::nothrow_t�const&)<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=<number>.<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�>=�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�>=�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�>=�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�>=�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"><<�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�>></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