323177 Unhandled instruction: SMLSLD (ARM + Thumb)
FIXED 2778 13584
+324421 Support for fanotify API on ARM architecture
+ FIXED 13586
+
Release 3.8.1 (19 September 2012)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
" --merge-recursive-frames=<number> merge frames between identical\n"
" program counters in max <number> frames) [0]\n"
" --num-transtab-sectors=<number> size of translated code cache [%d]\n"
-" more sectors may increase the performance, but use more memory.\n"
+" more sectors may increase performance, but use more memory.\n"
" --show-emwarns=no|yes show warnings about emulation limits? [no]\n"
" --require-text-symbol=:sonamepattern:symbolpattern abort run if the\n"
" stated shared object doesn't have the stated\n"
UInt VG_(clo_num_transtab_sectors) = N_SECTORS_DEFAULT;
/* Nr of sectors.
Will be set by VG_(init_tt_tc) to VG_(clo_num_transtab_sectors). */
-static int n_sectors;
+static UInt n_sectors = 0;
/*------------------ CONSTANTS ------------------*/
/* Number of TC entries in each sector. This needs to be a prime
/* The number of ULongs in each TCEntry area. This is computed once
at startup and does not change. */
-static Int tc_sector_szQ;
+static Int tc_sector_szQ = 0;
/* A list of sector numbers, in the order which they should be
void VG_(init_tt_tc) ( void )
{
- Int i, j, avg_codeszQ;
+ Int i, avg_codeszQ;
vg_assert(!init_done);
init_done = True;
vg_assert(n_sectors >= MIN_N_SECTORS);
vg_assert(n_sectors <= MAX_N_SECTORS);
- /* Initialise the sectors */
+ /* Initialise the sectors, even the ones we aren't going to use.
+ Set all fields to zero. */
youngest_sector = 0;
- for (i = 0; i < n_sectors; i++) {
- sectors[i].tc = NULL;
- sectors[i].tt = NULL;
- sectors[i].tc_next = NULL;
- sectors[i].tt_n_inuse = 0;
- for (j = 0; j < ECLASS_N; j++) {
- sectors[i].ec2tte_size[j] = 0;
- sectors[i].ec2tte_used[j] = 0;
- sectors[i].ec2tte[j] = NULL;
- }
- sectors[i].host_extents = NULL;
- }
+ for (i = 0; i < MAX_N_SECTORS; i++)
+ VG_(memset)(§ors[i], 0, sizeof(sectors[i]));
- /* Initialise the sector_search_order hint table. */
- for (i = 0; i < n_sectors; i++)
+ /* Initialise the sector_search_order hint table, including the
+ entries we aren't going to use. */
+ for (i = 0; i < MAX_N_SECTORS; i++)
sector_search_order[i] = -1;
/* Initialise the fast cache. */
/* Limits for number of sectors the TC is divided into. If you need a larger
overall translation cache, increase MAX_N_SECTORS. */
#define MIN_N_SECTORS 2
-#define MAX_N_SECTORS 32
+#define MAX_N_SECTORS 24
/* Default for the nr of sectors, if not overriden by command line.
On Android, space is limited, so try to get by with fewer sectors.
MIPS64; has patch; assigned to Petar
MAYBE 3.9 (query Petar)
-322254 *Show threadname together with tid if set by application
- Contains plausible looking patch (what's with XML output??)
- FIX 3.9 (commit)
-
322256 Provide more callstacks on memory pool related errors
Contains plausible patch; needs looking at
Severity: low Audience: low
Hmm, looks like a real bug.
Severity: med Audience: low
-324421 *Support for fanotify API on ARM architecture
- Has simple patch; should apply.
- FIX 3.9 (trivial patch)
-
324486 WARNING: unhandled syscall: 310
== 166355
Hmm, tricky, sys_unshare.
<option><![CDATA[--num-transtab-sectors=<number> [default: 6 or 16] ]]></option>
</term>
<listitem>
- <para>Valgrind translates and instruments your program code. The
- translations are stored in a translation cache organized in
- sectors. If the cache is full, the sector containing the older
- translations is emptied and recycled. If these old translations
- are needed again, Valgrind must re-translate and re-instrument
- the corresponding program code. If the "executed instructions"
- working set of a program is big, increasing the number of
- sectors may improve the performance by reducing the number of
- re-translations needed. A sector is lazily allocated but once
- allocated, it permanently uses several MB depending
- on the tool (about 40 MB per sector for memcheck).
- Use the option <option>--stats=yes</option> to obtain precise
+ <para>Valgrind translates and instruments your program's machine
+ code in small fragments. The translations are stored in a
+ translation cache that is divided into a number of sections
+ (sectors). If the cache is full, the sector containing the
+ oldest translations is emptied and recycled. If these old
+ translations are needed again, Valgrind must re-translate and
+ re-instrument the corresponding program code, which is
+ expensive. If the "executed instructions" working set of a
+ program is big, increasing the number of sectors may improve
+ performance by reducing the number of re-translations needed.
+ Sectors are allocated on demand. Once allocated, a sector can
+ never be freed, and occupies considerable space, on the tool
+ (about 40 MB per sector for Memcheck). Use the
+ option <option>--stats=yes</option> to obtain precise
information about the memory used by a sector and the allocation
and recycling of sectors.</para>
</listitem>
--merge-recursive-frames=<number> merge frames between identical
program counters in max <number> frames) [0]
--num-transtab-sectors=<number> size of translated code cache [16]
- more sectors may increase the performance, but use more memory.
+ more sectors may increase performance, but use more memory.
--show-emwarns=no|yes show warnings about emulation limits? [no]
--require-text-symbol=:sonamepattern:symbolpattern abort run if the
stated shared object doesn't have the stated
--merge-recursive-frames=<number> merge frames between identical
program counters in max <number> frames) [0]
--num-transtab-sectors=<number> size of translated code cache [16]
- more sectors may increase the performance, but use more memory.
+ more sectors may increase performance, but use more memory.
--show-emwarns=no|yes show warnings about emulation limits? [no]
--require-text-symbol=:sonamepattern:symbolpattern abort run if the
stated shared object doesn't have the stated