On Sun, 2010-01-31 at 12:31 -0600, JW Simpson wrote:
On Sun, 2010-01-31 at 15:40 +0100, Michelle Konzack wrote:
Hello,
...
procmail: Assigning "LOG=#### 6 ####
"
#### 6 ####
procmail: Executing " test -z "${TMPVAR5}""
procmail: Failed to execute ""
procmail: Non-zero exitcode (69) from " test -z "${TMPVAR5}""
procmail: No match on " test -z "${TMPVAR5}""
procmail: Executing " test -z "${TMPVAR5}""
procmail: Failed to execute ""
procmail: Non-zero exitcode (69) from " test -z "${TMPVAR5}""
procmail: No match on " test -z "${TMPVAR5}""
procmail: Assigning "LOG=#### 9 ####
I still don not see what is causing the 'Failed to execute ""' error.
I was, however, able to reproduce the exitcode 69 with a bit less code:
john(_at_)system76-pc:~/kon$ cat kon.rc
SHELL='/bin/sh'
NL='
'
LINEBUF=654321
# 127 works; 128 fails
SIZE=128
LOG="SIZE=${SIZE} kB${NL}"
BIGVAR=`seq -ws '' 1 100000 | dd count=$SIZE bs=1K`
VERBOSE=yes
:0
* ? test -z "${TMPVAR5}"
{
LOG=matched
}
VERBOSE=no
:0
|
john(_at_)system76-pc:~/kon$ :|procmail -m kon.rc
SIZE=128 kB
128+0 records in
128+0 records out
131072 bytes (131 kB) copied, 0.022458 s, 5.8 MB/s
procmail: [16547] Sun Jan 31 12:15:32 2010
procmail: Executing " test -z "${TMPVAR5}""
procmail: Failed to execute " test -z "${TMPVAR5}""
procmail: [16547] Sun Jan 31 12:15:32 2010
procmail: Non-zero exitcode (69) from " test -z "${TMPVAR5}""
procmail: No match on " test -z "${TMPVAR5}""
procmail: Assigning "VERBOSE=no"
Regarding exitcode 69, I only found this ->
http://www.errorpro.com/unix/unixerror.php?ecode=ESRMNT&descr=Stream%20Problems%20Errors
I believe the limit you are hitting might actually be with exporting the
environment to /bin/sh ?
john(_at_)system76-pc:~/kon$ SIZE=127;export BIGVAR=`seq -ws '' 1 1000000 |
dd count=$SIZE bs=1K`;test -z "${BIGVAR}"; /bin/sh -c 'test -z "${BIGVAR}";
echo $?'
127+0 records in
127+0 records out
130048 bytes (130 kB) copied, 0.02076 s, 6.3 MB/s
1
john(_at_)system76-pc:~/kon$ SIZE=128;export BIGVAR=`seq -ws '' 1 1000000 |
dd count=$SIZE bs=1K`;test -z "${BIGVAR}"; /bin/sh -c 'test -z "${BIGVAR}";
echo $?'
128+0 records in
128+0 records out
131072 bytes (131 kB) copied, 0.0207557 s, 6.3 MB/s
bash: /bin/sh: Argument list too long
john(_at_)system76-pc:~/kon$ man bash
bash: /usr/bin/man: Argument list too long
john(_at_)system76-pc:~/kon$ man bash
bash: /usr/bin/man: Argument list too long
john(_at_)system76-pc:~/kon$ env
bash: /usr/bin/env: Argument list too long
I am not certain, but it seems to me that those limits are possibly
controlled by "stack" or "msqqueue" in /etc/security/limits.conf ->
http://linux.die.net/man/5/limits.conf
Perhaps another list member can shed more light on the topic?
I would pursue modifying the code to avoid reaching this limit rather than
attempting to change the limit.
Some more info:
http://www.unix.com/unix-advanced-expert-users/15577-arg-list-too-long.html
says:
The system could not handle the number of arguments given to a
command or program when it combined those arguments with the
environment's exported shell variables. The argument list limit
is the size of the argument list plus the size of the
environment's exported shell variables.
The easiest solution is to reduce the size of the parent process
environment by unsetting extraneous environment variables. (See
the man page for the shell you're using to find out how to list
and change your environment variables.) Then run the program
again.
An argument list longer than ARG_MAX bytes was presented to a
member of the exec() family of system calls.
The symbolic name for this error is E2BIG, errno=7.
... and ...
Check out the xargs command. Can you post the command that is failing?
Following up on that, I get this:
john(_at_)system76-pc:~/kon$ SIZE=127;export BIGVAR=`seq -ws '' 1
1000000 | dd count=$SIZE bs=1K`;test -z "${BIGVAR}"; echo /bin/sh -c 'test -z
"${BIGVAR}"; echo $?' | xargs --show-limits
127+0 records in
127+0 records out
130048 bytes (130 kB) copied, 0.0055172 s, 23.6 MB/s
Your environment variables take up 132526 bytes
POSIX upper limit on argument length (this system): 1962578
POSIX smallest allowable upper limit on argument length (all systems):
4096
Maximum length of command we could actually use: 1830052
Size of command buffer we are actually using: 131072
/bin/sh -c test -z ${BIGVAR}; echo $?
--
JW Simpson <john(_at_)swajime(_dot_)com>
SwaJime's Cove℠
____________________________________________________________
procmail mailing list Procmail homepage: http://www.procmail.org/
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)de
http://mailman.rwth-aachen.de/mailman/listinfo/procmail