You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
1
(7) |
2
(5) |
3
(2) |
4
(8) |
5
(10) |
|
6
(3) |
7
(9) |
8
(7) |
9
(8) |
10
(7) |
11
(4) |
12
(11) |
|
13
(5) |
14
(17) |
15
(6) |
16
(15) |
17
|
18
(3) |
19
(1) |
|
20
(6) |
21
(18) |
22
(5) |
23
(9) |
24
(6) |
25
(3) |
26
(1) |
|
27
(1) |
28
|
29
(8) |
30
(5) |
|
|
|
|
From: <sv...@va...> - 2015-09-04 21:53:03
|
Author: mjw
Date: Fri Sep 4 22:52:52 2015
New Revision: 15625
Log:
Fix bug #339636 Use fxsave64 and fxrstor64 mnemonics again.
Just add a configure check to see if the assembler understands
fxsave64/fxrstor64 and fall back to the old-school rex64 prefix
otherwise.
Modified:
trunk/NEWS
trunk/configure.ac
trunk/memcheck/tests/amd64/fxsave-amd64.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri Sep 4 22:52:52 2015
@@ -210,11 +210,10 @@
339156 gdbsrv not called for fatal signal
339215 Valgrind 3.10.0 contain 2013 in copyrights notice
339288 support Cavium Octeon MIPS specific BBIT*32 instructions
-339636 Use fxsave64 and fxrstor64 mnemonics instead of rex64 prefix
+339636 Use fxsave64 and fxrstor64 mnemonics instead of old-school rex64 prefix
339442 Fix testsuite build failure on OS X 10.9
339542 Enable compilation with Intel's ICC compiler
339563 The DVB demux DMX_STOP ioctl doesn't have a wrapper
-339636 Use fxsave64 and fxrstor64 mnemonics instead of old-school rex64 prefix
339688 Mac-specific ASM does not support .version directive (cpuid,
tronical and pushfpopf tests)
339745 Valgrind crash when check Marmalade app (partial fix)
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Fri Sep 4 22:52:52 2015
@@ -2231,6 +2231,24 @@
fi
+# does the amd64 assembler understand "fxsave64" and "fxrstor64"?
+AC_MSG_CHECKING([if amd64 assembler supports fxsave64/fxrstor64])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+void* p;
+asm __volatile__("fxsave64 (%0)" : : "r" (p) : "memory" );
+asm __volatile__("fxrstor64 (%0)" : : "r" (p) : "memory" );
+]])], [
+ac_have_as_amd64_fxsave64=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_amd64_fxsave64=no
+AC_MSG_RESULT([no])
+])
+if test x$ac_have_as_amd64_fxsave64 = xyes ; then
+ AC_DEFINE(HAVE_AS_AMD64_FXSAVE64, 1, [Define to 1 if as supports fxsave64/fxrstor64.])
+fi
+
# does the x86/amd64 assembler understand SSE3 instructions?
# Note, this doesn't generate a C-level symbol. It generates a
# automake-level symbol (BUILD_SSE3_TESTS), used in test Makefile.am's
Modified: trunk/memcheck/tests/amd64/fxsave-amd64.c
==============================================================================
--- trunk/memcheck/tests/amd64/fxsave-amd64.c (original)
+++ trunk/memcheck/tests/amd64/fxsave-amd64.c Fri Sep 4 22:52:52 2015
@@ -1,4 +1,4 @@
-
+#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include "tests/asm.h"
@@ -17,7 +17,7 @@
__attribute__((noinline))
void do_fxsave ( void* p, int rexw ) {
if (rexw) {
-#if (defined(VGO_linux) || defined(VGO_solaris)) && ! defined(__clang__)
+#ifdef HAVE_AS_AMD64_FXSAVE64
asm __volatile__("fxsave64 (%0)" : : "r" (p) : "memory" );
#else
asm __volatile__("rex64/fxsave (%0)" : : "r" (p) : "memory" );
@@ -30,7 +30,7 @@
__attribute__((noinline))
void do_fxrstor ( void* p, int rexw ) {
if (rexw) {
-#if (defined(VGO_linuxx) || defined(VGO_solaris)) && ! defined(__clang__)
+#ifdef HAVE_AS_AMD64_FXSAVE64
asm __volatile__("fxrstor64 (%0)" : : "r" (p) : "memory" );
#else
asm __volatile__("rex64/fxrstor (%0)" : : "r" (p) : "memory" );
|
|
From: <sv...@va...> - 2015-09-04 20:54:40
|
Author: florian
Date: Fri Sep 4 21:54:34 2015
New Revision: 15624
Log:
Add an assert.
Modified:
trunk/none/tests/s390x/fpext.c
Modified: trunk/none/tests/s390x/fpext.c
==============================================================================
--- trunk/none/tests/s390x/fpext.c (original)
+++ trunk/none/tests/s390x/fpext.c Fri Sep 4 21:54:34 2015
@@ -1,5 +1,6 @@
#include <float.h>
#include <stdio.h>
+#include <assert.h>
#include "opcodes.h"
@@ -131,6 +132,7 @@
int main()
{
+ assert(sizeof(long double) == 16);
DO_L2F(4);
DO_F2L(4);
|
|
From: <sv...@va...> - 2015-09-04 20:52:27
|
Author: florian
Date: Fri Sep 4 21:52:20 2015
New Revision: 15623
Log:
To test extended BFP opcodes we need sizeof(long double) == 16.
Certain old versions of GCC don't have that as default. So we must
give -mlong-double-128 on the command line.
Pertains to BZ #352183.
Modified:
trunk/configure.ac
trunk/none/tests/s390x/Makefile.am
trunk/none/tests/s390x/fpext.vgtest
trunk/none/tests/s390x/fpext_fail.vgtest
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Fri Sep 4 21:52:20 2015
@@ -1847,6 +1847,25 @@
AC_SUBST(PREFERRED_STACK_BOUNDARY_2)
+# does this compiler support -mlong-double-128 ?
+AC_MSG_CHECKING([if gcc accepts -mlong-double-128])
+safe_CFLAGS=$CFLAGS
+CFLAGS="-mlong-double-128 -Werror"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ return 0;
+]])], [
+ac_compiler_supports_mlong_double_128=yes
+AC_MSG_RESULT([yes])
+], [
+ac_compiler_supports_mlong_double_128=no
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+AM_CONDITIONAL(HAS_MLONG_DOUBLE_128, test x$ac_compiler_supports_mlong_double_128 = xyes)
+FLAG_MLONG_DOUBLE_128="-mlong-double-128"
+AC_SUBST(FLAG_MLONG_DOUBLE_128)
+
+
# Convenience function to check whether GCC supports a particular
# warning option. Takes two arguments,
# first the warning flag name to check (without -W), then the
Modified: trunk/none/tests/s390x/Makefile.am
==============================================================================
--- trunk/none/tests/s390x/Makefile.am (original)
+++ trunk/none/tests/s390x/Makefile.am Fri Sep 4 21:52:20 2015
@@ -8,7 +8,7 @@
op_exception fgx stck stckf stcke stfle cksm mvcl clcl troo \
trto trot trtt tr tre cij cgij clij clgij crj cgrj clrj clgrj \
cs csg cds cdsg cu21 cu21_1 cu24 cu24_1 cu42 cu12 cu12_1 \
- ex_sig ex_clone cu14 cu14_1 cu41 fpconv ecag fpext fpext_warn \
+ ex_sig ex_clone cu14 cu14_1 cu41 fpconv ecag fpext_warn \
rounding-1 rounding-2 rounding-3 rounding-4 rounding-5 bfp-1 \
bfp-2 bfp-3 bfp-4 srnm srnmb comp-1 comp-2 exrl tmll tm stmg \
ex clst mvc test_fork test_sig rounding-6 rxsbg\
@@ -21,6 +21,9 @@
if BUILD_DFP_TESTS
INSN_TESTS += dfp-1 dfp-2 dfp-3 dfp-4 dfptest dfpext dfpconv srnmt pfpo
endif
+if HAS_MLONG_DOUBLE_128
+ INSN_TESTS += fpext
+endif
check_PROGRAMS = $(INSN_TESTS) \
allexec \
@@ -33,6 +36,7 @@
ecag.stdout.exp-z10ec ecag.stdout.exp-z196 ecag.stdout.exp-zec12 \
ecag.stdout.exp-z13 \
op00.stderr.exp1 op00.stderr.exp2 op00.vgtest \
+ fpext.vgtest fpext.stderr.exp fpext.stdout.exp \
fpext_fail.vgtest fpext_fail.stderr.exp fpext_fail.stdout.exp \
test.h opcodes.h add.h and.h div.h insert.h dfp_utils.h \
mul.h or.h sub.h xor.h table.h svc.h rounding.h \
@@ -56,5 +60,5 @@
cu14_1_CFLAGS = $(AM_CFLAGS) -DM3=1
cu21_1_CFLAGS = $(AM_CFLAGS) -DM3=1
cu24_1_CFLAGS = $(AM_CFLAGS) -DM3=1
-
+fpext_CFLAGS = $(AM_CFLAGS) @FLAG_MLONG_DOUBLE_128@
ex_clone_LDFLAGS = -lpthread
Modified: trunk/none/tests/s390x/fpext.vgtest
==============================================================================
--- trunk/none/tests/s390x/fpext.vgtest (original)
+++ trunk/none/tests/s390x/fpext.vgtest Fri Sep 4 21:52:20 2015
@@ -1,2 +1,2 @@
prog: fpext
-prereq: ../../../tests/s390x_features s390x-fpext
+prereq: test -e fpext && ../../../tests/s390x_features s390x-fpext
Modified: trunk/none/tests/s390x/fpext_fail.vgtest
==============================================================================
--- trunk/none/tests/s390x/fpext_fail.vgtest (original)
+++ trunk/none/tests/s390x/fpext_fail.vgtest Fri Sep 4 21:52:20 2015
@@ -1,2 +1,2 @@
prog: fpext
-prereq: ../../../tests/s390x_features '!s390x-fpext'
+prereq: test -e fpext && ../../../tests/s390x_features '!s390x-fpext'
|
|
From: Matthias S. <zz...@ge...> - 2015-09-04 20:52:05
|
Hi! The test helgrind/tests/stackteardown sometimes crashes with a SIGSEGV inside of pthread_create. gentoo, amd64, glibc-2.21-r1, gcc-4.9.3 It seems that this crash happens when the created thread already exited (or at least unmapped the stack). pthread_create.c:711: if (pd->stopped_start) The test app crashes also without valgrind. I wonder if the child thread needs a bit of waiting to make main leave pthread_create? --- stackteardown.stderr.exp 2015-05-17 14:29:09.000000000 +0200 +++ stackteardown.stderr.out 2015-09-04 20:08:03.000000000 +0200 @@ -1,3 +1,14 @@ +Process terminating with default action of signal 11 (SIGSEGV) + Access not within mapped region at address 0x........ + ... + by 0x........: pthread_create@* (hg_intercepts.c:...) + by 0x........: main (stackteardown.c:105) + If you believe this happened as a result of a stack + overflow in your program's main thread (unlikely but + possible), you can try to increase the size of the + main thread stack using the --main-stacksize= flag. + The main thread stack size used in this run was .... + ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) directly executed: ==29782== Process terminating with default action of signal 11 (SIGSEGV) ==29782== Access not within mapped region at address 0x4032D13 ==29782== at 0x4E43ABD: pthread_create@@GLIBC_2.2.5 (pthread_create.c:711) ==29782== by 0x4C3073C: pthread_create_WRK (hg_intercepts.c:427) ==29782== by 0x4C31815: pthread_create@* (hg_intercepts.c:460) ==29782== by 0x40098C: main (stackteardown.c:105) without valgrind: (gdb) bt #0 __pthread_create_2_1 (newthread=0x7fffffffd8e8, attr=<optimized out>, start_routine=0x40086b <child_fn>, arg=0x0) at pthread_create.c:711 #1 0x000000000040098d in main () at stackteardown.c:105 (gdb) info threads Id Target Id Frame * 1 Thread 0x7ffff7fb4700 (LWP 24672) "stackteardown" __pthread_create_2_1 (newthread=0x7fffffffd8e8, attr=<optimized out>, start_routine=0x400 86b <child_fn>, arg=0x0) at pthread_create.c:711 Regards Matthias |
|
From: <sv...@va...> - 2015-09-04 10:52:08
|
Author: mjw
Date: Fri Sep 4 11:52:01 2015
New Revision: 15622
Log:
Bug #352130 helgrind reports false races for printfs using mempcpy
Add a new Race suppression.
Modified:
trunk/NEWS
trunk/glibc-2.34567-NPTL-helgrind.supp
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri Sep 4 11:52:01 2015
@@ -371,6 +371,7 @@
351756 Intercept platform_memchr$VARIANT$Haswell on OS X
351858 ldsoexec support on Solaris
351873 Newer gcc doesn't allow __builtin_tabortdc[i] in ppc32 mode
+352130 helgrind reports false races for printfs using mempcpy on FILE* state
n-i-bz Provide implementations of certain compiler builtins to support
compilers that may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
Modified: trunk/glibc-2.34567-NPTL-helgrind.supp
==============================================================================
--- trunk/glibc-2.34567-NPTL-helgrind.supp (original)
+++ trunk/glibc-2.34567-NPTL-helgrind.supp Fri Sep 4 11:52:01 2015
@@ -23,6 +23,10 @@
# this, then loads of errors to do with stdio are reported, because
# H fails to see glibc's internal locking/unlocking of FILE*s
# as required by POSIX. A better solution is needed.
+#
+# - some of the stdio functions in newer glibc manipulate stdio
+# FILE*s state through mempcpy, which we intercept, so we also need
+# to suppress such manipulations.
#{
# helgrind-glibc2X-001
@@ -41,6 +45,14 @@
}
{
+ helgrind-glibc-io-xsputn-mempcpy
+ Helgrind:Race
+ fun:__GI_mempcpy
+ fun:_IO_*xsputn*
+ obj:*/lib*/libc-2.*so*
+}
+
+{
helgrind-glibc2X-005
Helgrind:Race
obj:*/lib*/libpthread-2.*so*
|
|
From: <sv...@va...> - 2015-09-04 10:21:46
|
Author: mjw
Date: Fri Sep 4 11:21:38 2015
New Revision: 15621
Log:
Update COPYING and COPYING.DOCS with new FSF address.
Copied latest GPLv2 and GFDLv1.2 files from gnulib.
Modified:
trunk/COPYING
trunk/COPYING.DOCS
Modified: trunk/COPYING
==============================================================================
--- trunk/COPYING (original)
+++ trunk/COPYING Fri Sep 4 11:21:38 2015
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -56,7 +56,7 @@
The precise terms and conditions for copying, distribution and
modification follow.
- GNU GENERAL PUBLIC LICENSE
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -255,7 +255,7 @@
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -277,9 +277,9 @@
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
- END OF TERMS AND CONDITIONS
+ END OF TERMS AND CONDITIONS
- How to Apply These Terms to Your New Programs
+ How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -303,17 +303,16 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -336,5 +335,5 @@
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
+library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
Modified: trunk/COPYING.DOCS
==============================================================================
--- trunk/COPYING.DOCS (original)
+++ trunk/COPYING.DOCS Fri Sep 4 11:21:38 2015
@@ -1,9 +1,9 @@
- GNU Free Documentation License
- Version 1.2, November 2002
+ GNU Free Documentation License
+ Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -395,4 +395,3 @@
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
-
|
|
From: Mark W. <mj...@re...> - 2015-09-04 09:43:07
|
On Wed, 2015-09-02 at 00:23 +0200, Mark Wielaard wrote: > On Mon, Aug 24, 2015 at 10:19:01PM +0200, Mark Wielaard wrote: > > I hoped to fix the SIGABRT issue with tc18 and tc20 for sem_post > > in a similar way. See attached. > > > > It does "fix" the tc18 case, but not the tc20 case. > > > > Since hellgrind doesn't actually see the failure now it doesn't report > > anything. Which works for tc18 since there is an alternate exp file with > > that result (silent bad sem_post), but tc20 doesn't have an alternative > > where there is no EINVAL so it still reports an error. But at least not > > an abort, but a missing EINVAL. > > > > I do think glibc not detecting a bad semaphore might be allowed, so > > maybe we could just add an alternative tc20.exp that just doesn't see > > the EINVAL. Or would that be too much "cheating"? > > So if nobody objects I would like to push the attached patch. Since nobody loudly objected I have now pushed this as valgrind svn r15620. Please yell and scream if this breaks things for anybody. Thanks, Mark |
|
From: <sv...@va...> - 2015-09-04 09:41:50
|
Author: mjw
Date: Fri Sep 4 10:41:42 2015
New Revision: 15620
Log:
Add safe sem_post handler and glibc-2.21 expected output for helgrind tests.
This fixes the tc18 and tc20 testcases.
On some bad semaphores glibc now might just abort, we catch the SIGABRT
and turn it into a EINVAL. The program will see this, but the helgrind
wrapper won't. Which works for tc18 since there is an alternate exp file
with that result (silent bad sem_post). We add a similar alternative exp
file for tc21.
Added:
trunk/helgrind/tests/safe-semaphore.h
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21
Modified:
trunk/helgrind/tests/Makefile.am
trunk/helgrind/tests/tc18_semabuse.c
trunk/helgrind/tests/tc20_verifywrap.c
Modified: trunk/helgrind/tests/Makefile.am
==============================================================================
--- trunk/helgrind/tests/Makefile.am (original)
+++ trunk/helgrind/tests/Makefile.am Fri Sep 4 10:41:42 2015
@@ -98,6 +98,7 @@
tc20_verifywrap.vgtest tc20_verifywrap.stdout.exp \
tc20_verifywrap.stderr.exp \
tc20_verifywrap.stderr.exp-glibc-2.18 \
+ tc20_verifywrap.stderr.exp-glibc-2.21 \
tc20_verifywrap.stderr.exp-mips32 \
tc20_verifywrap.stderr.exp-mips32-b \
tc20_verifywrap.stderr.exp-s390x \
@@ -115,8 +116,8 @@
tls_threads.vgtest tls_threads.stdout.exp \
tls_threads.stderr.exp
-# Wrapper header used by some check programs.
-noinst_HEADERS = safe-pthread.h
+# Wrapper headers used by some check programs.
+noinst_HEADERS = safe-pthread.h safe-semaphore.h
# XXX: tc18_semabuse uses operations that are unsupported on Darwin. It
# should be conditionally compiled like tc20_verifywrap is.
Added: trunk/helgrind/tests/safe-semaphore.h
==============================================================================
--- trunk/helgrind/tests/safe-semaphore.h (added)
+++ trunk/helgrind/tests/safe-semaphore.h Fri Sep 4 10:41:42 2015
@@ -0,0 +1,41 @@
+#include <semaphore.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <errno.h>
+#include <assert.h>
+
+static sigjmp_buf env;
+
+/*
+ * Newer glibc crashes on really bogus semaphors.
+ * Catch a SIGABRT and turn it into a EINVAL.
+ */
+static void abrt_handler( int signum, siginfo_t *siginfo, void *sigcontext ) {
+ siglongjmp( env, EINVAL );
+}
+
+static int safe_sem_post( sem_t *sem ) {
+ struct sigaction sa;
+ struct sigaction oldsa;
+ int r, e;
+
+ sa.sa_handler = NULL;
+ sa.sa_sigaction = abrt_handler;
+ sigemptyset( &sa.sa_mask );
+ sa.sa_flags = SA_SIGINFO;
+
+ sigaction( SIGABRT, &sa, &oldsa );
+
+ if ( ( e = sigsetjmp( env, 1 ) ) == 0 ) {
+ r = sem_post( sem );
+ } else {
+ r = -1;
+ }
+ errno = e;
+
+ sigaction( SIGABRT, &oldsa, NULL );
+
+ return r;
+}
+
+#define sem_post safe_sem_post
Modified: trunk/helgrind/tests/tc18_semabuse.c
==============================================================================
--- trunk/helgrind/tests/tc18_semabuse.c (original)
+++ trunk/helgrind/tests/tc18_semabuse.c Fri Sep 4 10:41:42 2015
@@ -11,7 +11,7 @@
#include <stdlib.h>
#include <assert.h>
#include <pthread.h>
-#include <semaphore.h>
+#include "safe-semaphore.h"
#include <string.h>
void start_watchdog ( void );
int main ( void )
Modified: trunk/helgrind/tests/tc20_verifywrap.c
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.c (original)
+++ trunk/helgrind/tests/tc20_verifywrap.c Fri Sep 4 10:41:42 2015
@@ -16,7 +16,7 @@
#include <assert.h>
#include <unistd.h>
#include "safe-pthread.h"
-#include <semaphore.h>
+#include "safe-semaphore.h"
#if !defined(__APPLE__)
Added: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21 (added)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.21 Fri Sep 4 10:41:42 2015
@@ -0,0 +1,247 @@
+
+
+
+------ This is output for >= glibc 2.4 ------
+
+---------------- pthread_create/join ----------------
+
+---Thread-Announcement------------------------------------------
+
+Thread #x is the program's root thread
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:81)
+
+----------------------------------------------------------------
+
+Possible data race during write of size 2 at 0x........ by thread #x
+Locks held: none
+ at 0x........: main (tc20_verifywrap.c:83)
+
+This conflicts with a previous write of size 2 by thread #x
+Locks held: none
+ at 0x........: racy_child (tc20_verifywrap.c:39)
+ by 0x........: mythread_wrapper (hg_intercepts.c:...)
+ ...
+ Location 0x........ is 0 bytes inside global var "unprotected"
+ declared at tc20_verifywrap.c:32
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_join failed
+ with error code 35 (EDEADLK: Resource deadlock would occur)
+ at 0x........: pthread_join_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_join (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:88)
+
+
+---------------- pthread_mutex_lock et al ----------------
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_init failed
+ with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
+ at 0x........: pthread_mutex_init (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:102)
+
+----------------------------------------------------------------
+
+Thread #x: pthread_mutex_destroy of a locked mutex
+ at 0x........: mutex_destroy_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:112)
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_destroy failed
+ with error code 16 (EBUSY: Device or resource busy)
+ at 0x........: mutex_destroy_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:112)
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: mutex_lock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:118)
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_trylock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: mutex_trylock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:126)
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_timedlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:131)
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: mutex_unlock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:135)
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: mutex_unlock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:135)
+
+
+---------------- pthread_cond_wait et al ----------------
+
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_{timed}wait called with un-held mutex
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:157)
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_cond_wait failed
+ with error code 1 (EPERM: Operation not permitted)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:157)
+
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
+ at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_signal@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:162)
+
+
+FIXME: can't figure out how to verify wrap of pthread_cond_signal
+
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
+ at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:168)
+
+
+FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
+
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_{timed}wait called with un-held mutex
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:175)
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_cond_timedwait failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:175)
+
+
+---------------- pthread_rwlock_* ----------------
+
+----------------------------------------------------------------
+
+Thread #x unlocked a not-locked lock at 0x........
+ at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
+ by 0x........: main (tc20_verifywrap.c:189)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_rwlock_init (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:188)
+ Location 0x........ is 0 bytes inside local var "rwl"
+ declared at tc20_verifywrap.c:52, in frame #x of thread x
+
+
+(1) no error on next line
+(2) no error on next line
+(3) ERROR on next line
+----------------------------------------------------------------
+
+Thread #x unlocked a not-locked lock at 0x........
+ at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
+ by 0x........: main (tc20_verifywrap.c:206)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_rwlock_init (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:196)
+ Location 0x........ is 0 bytes inside local var "rwl2"
+ declared at tc20_verifywrap.c:53, in frame #x of thread x
+
+
+(4) no error on next line
+(5) no error on next line
+(6) no error on next line
+(7) no error on next line
+(8) ERROR on next line
+----------------------------------------------------------------
+
+Thread #x unlocked a not-locked lock at 0x........
+ at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
+ by 0x........: main (tc20_verifywrap.c:227)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_rwlock_init (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:196)
+ Location 0x........ is 0 bytes inside local var "rwl2"
+ declared at tc20_verifywrap.c:53, in frame #x of thread x
+
+
+
+---------------- sem_* ----------------
+
+----------------------------------------------------------------
+
+Thread #x's call to sem_init failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: sem_init_WRK (hg_intercepts.c:...)
+ by 0x........: sem_init@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:248)
+
+
+FIXME: can't figure out how to verify wrap of sem_destroy
+
+----------------------------------------------------------------
+
+Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post
+ at 0x........: sem_wait_WRK (hg_intercepts.c:...)
+ by 0x........: sem_wait (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:262)
+
+
+FIXME: can't figure out how to verify wrap of sem_post
+
+
+------------ dealloc of mem holding locks ------------
+
+----------------------------------------------------------------
+
+Thread #x: Exiting thread still holds 1 lock
+ ...
+
+
+ERROR SUMMARY: 22 errors from 22 contexts (suppressed: 0 from 0)
|