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

Reply via email to