This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Dejagnu output size limit and flaky test ( c-c++-common/builtins.c -Wc++-compat )


Hello,

During testing we've noticed the "test for excess errors" check on the 
"c-c++-common/builtins.c  -Wc++-compat" sometimes passes and sometimes 
doesn't.

The cause seems to be a restriction in dejagnu where it stops reading 
after a given read if its output buffer is greater than 512000 bytes.


(see the below snippet copied from the "local_exec" procedure in 
$DEJAGNU_INSTALL/remote.exp)


     # Wait for either $timeout seconds to elapse, or for the program to
     # exit.
     expect {
	-i $spawn_id -timeout $timeout -re ".+" {
	    append output $expect_out(buffer)
	    if { [string length $output] < 512000 } {
		exp_continue -continue_timer
	    }
	}
	timeout {
	    warning "program timed out."
	}
	eof {
	    set got_eof 1
	}
     }



If the last read before the output is truncated happened to get part of 
a line so that the "warning" isn't there, and hence so the  { 
dg-prune-output "warning" }  directive doesn't apply, then the testcase 
fails.


This can only happen when the full pathname of the test file is 73 
characters long (or more), since each warning line includes the full 
pathname the length has a huge affect.


I'm mainly mentioning it to see if anyone else was having this problem, 
so I can tell how important it is to try and handle this more thoroughly.

Regards,
MM

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]