359829 PowerPC test none/tests/ppc64/test_isa_2_07.c uninitialized memory
references was fixed.
359871 Incorrect mask handling in ppoll
+360008 Contents of Power vr registers contents is not printed correctly when
+ the --vgdb-shadow-registers=yes option is used
360425 arm64 unsupported instruction ldpsw
360519 none/tests/arm64/memory.vgtest might fail with newer gcc
360749 kludge for multiple .rodata sections on Solaris no longer needed
361354 ppc64[le]: wire up separate socketcalls system calls
361226 s390x: risbgn (EC59) not implemented
361926 Unhandled Solaris syscall: sysfs(84)
-360008 Contents of Power vr registers contents is not printed correctly when
- the --vgdb-shadow-registers=yes option is used
+362009 Valgrind dumps core on unimplemented functionality before threads are created
n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 and amd64
n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap
}
VG_(printf)("\nsched status:\n");
- VG_(printf)(" running_tid=%u\n", VG_(get_running_tid)());
- for (i = 1; i < VG_N_THREADS; i++) {
- VgStack* stack
- = (VgStack*)VG_(threads)[i].os_state.valgrind_stack_base;
- /* If a thread slot was never used (yet), valgrind_stack_base is 0.
- If a thread slot is used by a thread or was used by a thread which
- has exited, then valgrind_stack_base points to the stack base. */
- if (VG_(threads)[i].status == VgTs_Empty
- && (!exited_threads || stack == 0)) continue;
- VG_(printf)("\nThread %d: status = %s (lwpid %d)\n", i,
- VG_(name_of_ThreadStatus)(VG_(threads)[i].status),
- VG_(threads)[i].os_state.lwpid);
- if (VG_(threads)[i].status != VgTs_Empty)
- VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
- if (stack_usage && VG_(threads)[i].client_stack_highest_byte != 0 ) {
- Addr start, end;
-
- start = end = 0;
- VG_(stack_limits)(VG_(threads)[i].client_stack_highest_byte,
- &start, &end);
- if (start != end)
- VG_(printf)("client stack range: [%p %p] client SP: %p\n",
- (void*)start, (void*)end, (void*)VG_(get_SP)(i));
- else
- VG_(printf)("client stack range: ???????\n");
+ if (VG_(threads) == NULL) {
+ VG_(printf)(" scheduler not yet initialised\n");
+ } else {
+ VG_(printf)(" running_tid=%u\n", VG_(get_running_tid)());
+ for (i = 1; i < VG_N_THREADS; i++) {
+ VgStack *stack
+ = (VgStack*)VG_(threads)[i].os_state.valgrind_stack_base;
+ /* If a thread slot was never used (yet), valgrind_stack_base is 0.
+ If a thread slot is used by a thread or was used by a thread which
+ has exited, then valgrind_stack_base points to the stack base. */
+ if (VG_(threads)[i].status == VgTs_Empty
+ && (!exited_threads || stack == 0)) continue;
+ VG_(printf)("\nThread %d: status = %s (lwpid %d)\n", i,
+ VG_(name_of_ThreadStatus)(VG_(threads)[i].status),
+ VG_(threads)[i].os_state.lwpid);
+ if (VG_(threads)[i].status != VgTs_Empty)
+ VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
+ if (stack_usage && VG_(threads)[i].client_stack_highest_byte != 0 ) {
+ Addr start, end;
+
+ start = end = 0;
+ VG_(stack_limits)(VG_(threads)[i].client_stack_highest_byte,
+ &start, &end);
+ if (start != end)
+ VG_(printf)("client stack range: [%p %p] client SP: %p\n",
+ (void*)start, (void*)end, (void*)VG_(get_SP)(i));
+ else
+ VG_(printf)("client stack range: ???????\n");
+ }
+ if (stack_usage && stack != 0)
+ VG_(printf)("valgrind stack top usage: %lu of %lu\n",
+ VG_(clo_valgrind_stacksize)
+ - VG_(am_get_VgStack_unused_szB)
+ (stack, VG_(clo_valgrind_stacksize)),
+ (SizeT) VG_(clo_valgrind_stacksize));
}
- if (stack_usage && stack != 0)
- VG_(printf)("valgrind stack top usage: %lu of %lu\n",
- VG_(clo_valgrind_stacksize)
- - VG_(am_get_VgStack_unused_szB)
- (stack, VG_(clo_valgrind_stacksize)),
- (SizeT) VG_(clo_valgrind_stacksize));
}
VG_(printf)("\n");
}