The bug is not with the amstatus program. The current log file is
corrupted because many program write to it at the same time and they use
buffered output.
Try the attached patch, it make the file descriptor unbufferred. You
should not see that error on the following run.
Jean-Louis
Dennis Benndorf wrote:
Hello,
after upgrading to 3.2.0 on the server `amstatus config` is throwing the
following messeges:
----------------
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 511.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 511.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 511.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 266, <AMDUMP> line 515.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 267, <AMDUMP> line 515.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 268, <AMDUMP> line 515.
** (process:20136): WARNING **: Use of uninitialized value within %getest in string
eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 515.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 516.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 516.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 516.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 659.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 659.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 268, <AMDUMP> line 659.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 659.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 266, <AMDUMP> line 660.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 267, <AMDUMP> line 660.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 268, <AMDUMP> line 660.
** (process:20136): WARNING **: Use of uninitialized value within %getest in string
eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 660.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 661.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 661.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 661.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 696.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 696.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 268, <AMDUMP> line 696.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 696.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 798.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 798.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 268, <AMDUMP> line 798.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 798.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 266, <AMDUMP> line 799.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 267, <AMDUMP> line 799.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 268, <AMDUMP> line 799.
** (process:20136): WARNING **: Use of uninitialized value within %getest in string
eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 799.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 800.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 800.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 800.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 802.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 802.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"} in string
eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 802.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 812.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 812.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 268, <AMDUMP> line 812.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 812.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 826.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 826.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 268, <AMDUMP> line 826.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 826.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 266, <AMDUMP> line 827.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 267, <AMDUMP> line 827.
** (process:20136): WARNING **: Use of uninitialized value in substitution (s///) at
/usr/local/sbin/amstatus line 268, <AMDUMP> line 827.
** (process:20136): WARNING **: Use of uninitialized value within %getest in string
eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 827.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 828.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 828.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 828.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 829.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 829.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"...} in
string eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 829.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"} in
substitution (s///) at /usr/local/sbin/amstatus line 266, <AMDUMP> line 830.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"} in
substitution (s///) at /usr/local/sbin/amstatus line 267, <AMDUMP> line 830.
** (process:20136): WARNING **: Use of uninitialized value $getest{"***"} in string
eq at /usr/local/sbin/amstatus line 269, <AMDUMP> line 830.
------------------
Anyone here with an idea?
Regards,
therm
diff --git a/server-src/amdump.pl b/server-src/amdump.pl
index 383fa85..ef54351 100644
--- a/server-src/amdump.pl
+++ b/server-src/amdump.pl
@@ -194,6 +194,8 @@ sub start_logfiles {
$amdump_log = undef;
open($amdump_log, ">", $amdump_log_filename)
or die("could not open amdump log file '$amdump_log_filename': $!");
+ select $amdump_log; $| = 1;
+ select STDOUT;
}
sub planner_driver_pipeline {
@@ -218,6 +220,8 @@ sub planner_driver_pipeline {
POSIX::close($rpipe);
POSIX::close($wpipe);
POSIX::dup2(fileno($amdump_log), 2);
+ select 2; $| = 1;
+ select STDOUT;
close($amdump_log);
exec $planner,
# note that @no_taper must follow --starttime
@@ -234,8 +238,11 @@ sub planner_driver_pipeline {
POSIX::close($rpipe);
POSIX::close($wpipe);
POSIX::dup2(fileno($amdump_log), 1); # driver does lots of logging to stdout..
+ select 1; $| = 1;
POSIX::close($null);
POSIX::dup2(fileno($amdump_log), 2);
+ select 2; $| = 1;
+ select STDOUT;
close($amdump_log);
exec $driver,
$config_name, @no_taper, @config_overrides_opts;