ANNOUNCEMENT: Live Wireshark University & Allegro Packets online APAC Wireshark Training Session
April 17th, 2024 | 14:30-16:00 SGT (UTC+8) | Online

Wireshark-dev: [Wireshark-dev] Python error: "execvp: bad file number"

From: Gisle Vanem <gvanem@xxxxxxxxxxxx>
Date: Fri, 17 Feb 2012 18:30:55 +0100
I hit a problem with the Python generation of epan/dissectors/register.c.
The message from my python (v. 2.7.2) at this stage was:
.. "execvp: python: Bad file number"

after reading the docs on '_execvp' [1] at MSDN, I suspect this error is related to the very long command-line given to python to generate the file register.c. The MSDN article specifies that the size of the command-
line *and* the environment cannot exceed 32 Kbytes. This seems to be the
case here. My environment size is (when python starts), almost 12 kB.
And the size of the command-line here is approx. 32kB.

Hence, if I understand this correctly, the 'errno' value (inside python's CRT or the CRT it uses) is set to 'E2BIG'. And 'strerror(E2BIG)' maps to "bad file number". But I fail to see which C-runtime returns this specific text. A quick test shows that my MSVCRT.DLL, MSVCR90.DLL etc. (and all previous versions) has a 'strerror(E2BIG)' that returns "arg list too long". So is it possible that my python uses another 'strerror()' or uses a custom version?. I'm confused.

A fix for me is to disable use of Python for this. I.e. comment away PYTHON in config.nmake. Has anyone else seen a problem like this?
I use python version 2.7.2 in Win-XP SP3.

[1] http://msdn.microsoft.com/en-us/library/3xw6zy53.aspx

--gv