Elliott Hughes | a0664b9 | 2017-04-18 17:46:52 -0700 | [diff] [blame^] | 1 | <html> |
| 2 | <head> |
| 3 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
| 4 | <title>7. README_PACKAGERS</title> |
| 5 | <link rel="stylesheet" type="text/css" href="vg_basic.css"> |
| 6 | <meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> |
| 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.readme-developers.html" title="6. README_DEVELOPERS"> |
| 10 | <link rel="next" href="dist.readme-s390.html" title="8. README.S390"> |
| 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.readme-developers.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-s390.html"><img src="images/next.png" width="18" height="21" border="0" alt="Next"></a></td> |
| 19 | </tr></table></div> |
| 20 | <div class="chapter"> |
| 21 | <div class="titlepage"><div><div><h1 class="title"> |
| 22 | <a name="dist.readme-packagers"></a>7. README_PACKAGERS</h1></div></div></div> |
| 23 | <div class="literallayout"><p><br> |
| 24 | <br> |
| 25 | Greetings, packaging person! This information is aimed at people<br> |
| 26 | building binary distributions of Valgrind.<br> |
| 27 | <br> |
| 28 | Thanks for taking the time and effort to make a binary distribution of<br> |
| 29 | Valgrind. The following notes may save you some trouble.<br> |
| 30 | <br> |
| 31 | <br> |
| 32 | -- Do not ship your Linux distro with a completely stripped<br> |
| 33 | /lib/ld.so. At least leave the debugging symbol names on -- line<br> |
| 34 | number info isn't necessary. If you don't want to leave symbols on<br> |
| 35 | ld.so, alternatively you can have your distro install ld.so's<br> |
| 36 | debuginfo package by default, or make ld.so.debuginfo be a<br> |
| 37 | requirement of your Valgrind RPM/DEB/whatever.<br> |
| 38 | <br> |
| 39 | Reason for this is that Valgrind's Memcheck tool needs to intercept<br> |
| 40 | calls to, and provide replacements for, some symbols in ld.so at<br> |
| 41 | startup (most importantly strlen). If it cannot do that, Memcheck<br> |
| 42 | shows a large number of false positives due to the highly optimised<br> |
| 43 | strlen (etc) routines in ld.so. This has caused some trouble in<br> |
| 44 | the past. As of version 3.3.0, on some targets (ppc32-linux,<br> |
| 45 | ppc64-linux), Memcheck will simply stop at startup (and print an<br> |
| 46 | error message) if such symbols are not present, because it is<br> |
| 47 | infeasible to continue.<br> |
| 48 | <br> |
| 49 | It's not like this is going to cost you much space. We only need<br> |
| 50 | the symbols for ld.so (a few K at most). Not the debug info and<br> |
| 51 | not any debuginfo or extra symbols for any other libraries.<br> |
| 52 | <br> |
| 53 | <br> |
| 54 | -- (Unfortunate but true) When you configure to build with the <br> |
| 55 | --prefix=/foo/bar/xyzzy option, the prefix /foo/bar/xyzzy gets<br> |
| 56 | baked into valgrind. The consequence is that you _must_ install<br> |
| 57 | valgrind at the location specified in the prefix. If you don't,<br> |
| 58 | it may appear to work, but will break doing some obscure things,<br> |
| 59 | particularly doing fork() and exec().<br> |
| 60 | <br> |
| 61 | So you can't build a relocatable RPM / whatever from Valgrind.<br> |
| 62 | <br> |
| 63 | <br> |
| 64 | -- Don't strip the debug info off lib/valgrind/$platform/vgpreload*.so<br> |
| 65 | in the installation tree. Either Valgrind won't work at all, or it<br> |
| 66 | will still work if you do, but will generate less helpful error<br> |
| 67 | messages. Here's an example:<br> |
| 68 | <br> |
| 69 | Mismatched free() / delete / delete []<br> |
| 70 | at 0x40043249: free (vg_clientfuncs.c:171)<br> |
| 71 | by 0x4102BB4E: QGArray::~QGArray(void) (tools/qgarray.cpp:149)<br> |
| 72 | by 0x4C261C41: PptDoc::~PptDoc(void) (include/qmemarray.h:60)<br> |
| 73 | by 0x4C261F0E: PptXml::~PptXml(void) (pptxml.cc:44)<br> |
| 74 | Address 0x4BB292A8 is 0 bytes inside a block of size 64 alloc'd<br> |
| 75 | at 0x4004318C: __builtin_vec_new (vg_clientfuncs.c:152)<br> |
| 76 | by 0x4C21BC15: KLaola::readSBStream(int) const (klaola.cc:314)<br> |
| 77 | by 0x4C21C155: KLaola::stream(KLaola::OLENode const *) (klaola.cc:416)<br> |
| 78 | by 0x4C21788F: OLEFilter::convert(QCString const &) (olefilter.cc:272)<br> |
| 79 | <br> |
| 80 | This tells you that some memory allocated with new[] was freed with<br> |
| 81 | free().<br> |
| 82 | <br> |
| 83 | Mismatched free() / delete / delete []<br> |
| 84 | at 0x40043249: (inside vgpreload_memcheck.so)<br> |
| 85 | by 0x4102BB4E: QGArray::~QGArray(void) (tools/qgarray.cpp:149)<br> |
| 86 | by 0x4C261C41: PptDoc::~PptDoc(void) (include/qmemarray.h:60)<br> |
| 87 | by 0x4C261F0E: PptXml::~PptXml(void) (pptxml.cc:44)<br> |
| 88 | Address 0x4BB292A8 is 0 bytes inside a block of size 64 alloc'd<br> |
| 89 | at 0x4004318C: (inside vgpreload_memcheck.so)<br> |
| 90 | by 0x4C21BC15: KLaola::readSBStream(int) const (klaola.cc:314)<br> |
| 91 | by 0x4C21C155: KLaola::stream(KLaola::OLENode const *) (klaola.cc:416)<br> |
| 92 | by 0x4C21788F: OLEFilter::convert(QCString const &) (olefilter.cc:272)<br> |
| 93 | <br> |
| 94 | This isn't so helpful. Although you can tell there is a mismatch, <br> |
| 95 | the names of the allocating and deallocating functions are no longer<br> |
| 96 | visible. The same kind of thing occurs in various other messages <br> |
| 97 | from valgrind.<br> |
| 98 | <br> |
| 99 | <br> |
| 100 | -- Don't strip symbols from lib/valgrind/* in the installation tree.<br> |
| 101 | Doing so will likely cause problems. Removing the line number info is<br> |
| 102 | probably OK (at least for some of the files in that directory), although<br> |
| 103 | that has not been tested by the Valgrind developers.<br> |
| 104 | <br> |
| 105 | <br> |
| 106 | -- Please test the final installation works by running it on something<br> |
| 107 | huge. I suggest checking that it can start and exit successfully<br> |
| 108 | both Firefox and OpenOffice.org. I use these as test programs, and I<br> |
| 109 | know they fairly thoroughly exercise Valgrind. The command lines to use<br> |
| 110 | are:<br> |
| 111 | <br> |
| 112 | valgrind -v --trace-children=yes firefox<br> |
| 113 | <br> |
| 114 | valgrind -v --trace-children=yes soffice<br> |
| 115 | <br> |
| 116 | <br> |
| 117 | If you find any more hints/tips for packaging, please report<br> |
| 118 | it as a bugreport. See http://www.valgrind.org for details.<br> |
| 119 | <br> |
| 120 | </p></div> |
| 121 | </div> |
| 122 | <div> |
| 123 | <br><table class="nav" width="100%" cellspacing="3" cellpadding="2" border="0" summary="Navigation footer"> |
| 124 | <tr> |
| 125 | <td rowspan="2" width="40%" align="left"> |
| 126 | <a accesskey="p" href="dist.readme-developers.html"><< 6. README_DEVELOPERS</a> </td> |
| 127 | <td width="20%" align="center"><a accesskey="u" href="dist.html">Up</a></td> |
| 128 | <td rowspan="2" width="40%" align="right"> <a accesskey="n" href="dist.readme-s390.html">8. README.S390 >></a> |
| 129 | </td> |
| 130 | </tr> |
| 131 | <tr><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td></tr> |
| 132 | </table> |
| 133 | </div> |
| 134 | </body> |
| 135 | </html> |