Of course "~/.valgrindrc" is enough. I just didn't know about it.

Thanks. Dmitry.

> -----Original Message-----
> From: Nuno Lopes [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, December 01, 2005 3:08 PM
> To: Dmitry Stogov; 'Marcus Boerger'
> Cc: php-cvs@lists.php.net
> Subject: Re: [PHP-CVS] cvs: php-src / run-tests.php 
> 
> 
> In my gentoo box I also receive a couple of annoying bugs in ld and 
> pthreads, but I have them disabled in ~/.valgrindrc: 
> --suppressions=/etc/valgrind.supp --leak-check=full
> 
> And valgrind will load that file automatically. 
> http://valgrind.org/docs/manual/manual-core.html also 
> referers three ways of 
> passing options:
>  * The file ~/.valgrindrc
>  * The environment variable $VALGRIND_OPTS
>  * The file ./.valgrindrc
> 
> About filtering the data, the -q switch is a good idea, but 
> then you loose 
> the ability to read the full valgrind report (with php 
> output), which can be 
> useful. Another option is to redirect the valgrind output to 
> another fd 
> (--log-fd=3) and make run-tests.php also read that fd.
> 
> Nuno
> 
> 
> ----- Original Message ----- 
> From: "Dmitry Stogov" <[EMAIL PROTECTED]>
> To: "'Marcus Boerger'" <[EMAIL PROTECTED]>; "Nuno Lopes" <[EMAIL PROTECTED]>
> Cc: <php-cvs@lists.php.net>
> Sent: Thursday, December 01, 2005 7:27 AM
> Subject: RE: [PHP-CVS] cvs: php-src / run-tests.php
> 
> 
> GREAT!
> 
> In addition, it would be nice to support "--suppressions" 
> valgrind option. On my system (FC4), valgrind always produces 
> the same pthread specific error on any run. Se patch in attachment.
> 
> Also it is possible to run valgrind wih "-q" option, so 
> valgrind will print it's own messages only on real errors, 
> and you will not need filter them.
> 
> Thanks. Dmitry.
> 
> > -----Original Message-----
> > From: Marcus Boerger [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, December 01, 2005 3:27 AM
> > To: php-cvs@lists.php.net
> > Subject: [PHP-CVS] cvs: php-src / run-tests.php
> >
> >
> > helly Wed Nov 30 19:26:45 2005 EDT
> >
> >   Modified files:
> >     /php-src run-tests.php
> >   Log:
> >   - Add support for valgrind testing (Nuno)
> >
> > http://cvs.php.net/diff.php/php-src/run-tests.php?r1=1.239&r2=
> > 1.240&ty=u
> > Index: php-src/run-tests.php
> > diff -u php-src/run-tests.php:1.239 php-src/run-tests.php:1.240
> > --- php-src/run-tests.php:1.239 Sat Nov 26 13:07:49 2005
> > +++ php-src/run-tests.php Wed Nov 30 19:26:44 2005
> > @@ -23,7 +23,7 @@
> >
> > +-------------------------------------------------------------
> > ---------+
> >   */
> >
> > -/* $Id: run-tests.php,v 1.239 2005/11/26 18:07:49 helly Exp $ */
> > +/* $Id: run-tests.php,v 1.240 2005/12/01 00:26:44 helly Exp $ */
> >
> >  /* Sanity check to ensure that pcre extension needed by 
> this script 
> > is available.
> >   * In the event it is not, print a nice error message 
> indicating that 
> > this script will @@ -274,6 +274,9 @@  $ini_overwrites[] =
> > 'unicode.output_encoding=utf-8';
> >  $ini_overwrites[] =
> > 'unicode.from_error_mode=U_INVALID_SUBSTITUTE';
> >  break;
> > + case 'm':
> > + $GLOBALS['leak_check'] = 1;
> > + break;
> >  default:
> >  echo "Illegal switch
> > specified!\n";
> >  case "h":
> > @@ -302,6 +305,8 @@
> >
> >      -u          Test with unicode_semantics set on.
> >
> > +    -m          Test for memory leaks with Valgrind
> > +
> >      -v          Verbose mode.
> >
> >      -h <file>   This Help.
> > @@ -682,7 +687,7 @@
> >  return $data;
> >  } else if ($n > 0) {
> >  $line = fread($pipes[1], 8192);
> > - if (strlen($line) == 0) {
> > + if ($line === false) {
> >  /* EOF */
> >  break;
> >  }
> > @@ -861,9 +866,10 @@
> >  $tmp_skipif = $tmp . DIRECTORY_SEPARATOR . uniqid('/phpt.');
> >  $tmp_file   = $tmp . DIRECTORY_SEPARATOR .
> > preg_replace('/\.phpt$/','.php',basename($file));
> >  $tmp_post   = $tmp . DIRECTORY_SEPARATOR . uniqid('/phpt.');
> > + $tmp_relative_file = 
> > +str_replace(dirname(__FILE__).DIRECTORY_SEPARATOR, '', 
> $tmp_file) . 
> > +'t';
> >
> >  if (is_array($IN_REDIRECT)) {
> > - $tested = $IN_REDIRECT['prefix'] . ' ' .
> > trim($section_text['TEST']) . " [$tmp_file]";
> > + $tested = $IN_REDIRECT['prefix'] . ' ' .
> > trim($section_text['TEST'])
> > +. " [$tmp_relative_file]";
> >  $section_text['FILE'] = "# original source
> > file: $shortname\n" . $section_text['FILE'];
> >  }
> >
> > @@ -1077,6 +1083,10 @@
> >  }
> >  }
> >
> > + if (isset($GLOBALS['leak_check'])) {
> > + $cmd = 'valgrind --tool=memcheck ' . $cmd;
> > + }
> > +
> >  if ($DETAILED) echo "
> >  CONTENT_LENGTH  = " . getenv("CONTENT_LENGTH") . "
> >  CONTENT_TYPE    = " . getenv("CONTENT_TYPE") . "
> > @@ -1100,6 +1110,31 @@
> >
> >  @unlink($tmp_post);
> >
> > + if (isset($GLOBALS['leak_check'])) { // leak check 
> > + preg_match_all('/==\d+== +\w+ lost: (\d+)
> > bytes/S', $out, $matches);
> > + $leak = false;
> > +
> > + foreach ($matches[1] as $m) {
> > + if ($m) { // we got a leak
> > + $leak = true;
> > + break;
> > + }
> > + }
> > +
> > + if (!$leak && !preg_match('/==\d+== ERROR
> > SUMMARY: [1-9]\d* errors/', $out)) {
> > + if (isset($old_php)) {
> > + $php = $old_php;
> > + }
> > + echo "PASS $tested\n";
> > + return 'PASSED';
> > + }
> > +
> > + $output = $out;
> > + $wanted = '';
> > + $warn = false;
> > +
> > + } else { // normal testing
> > +
> >  // Does the output match what is expected?
> >  $output = trim($out);
> >  $output = preg_replace('/\r\n/',"\n",$output);
> > @@ -1158,6 +1193,8 @@
> >  $wanted_re = NULL;
> >  }
> >
> > + } //end of non-valgrind testing
> > +
> >  // Test failed so we need to report details.
> >  if ($warn) {
> >  show_result("WARN", $tested, $file, $info);
> > @@ -1190,7 +1227,7 @@
> >  // write .diff
> >  if (strpos($log_format,'D') !== FALSE) {
> >  $log = fopen($diff_filename,'wt') or
> > error("Cannot create test log - $diff_filename");
> > - fwrite($log,generate_diff($wanted,$wanted_re,$output));
> > + fwrite($log, isset($GLOBALS['leak_check']) ? '' : 
> > +generate_diff($wanted,$wanted_re,$output));
> >  fclose($log);
> >  }
> 
> 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to