I have a binary - built on this 6.5-STABLE amd64 system by an automatic
build process as part of a CPAN module installation, that will not
execute:
rt@rt$ /var/www/rt/local/plugins/RT-Extension-TicketPDF/bin/wkhtmltopdf
ksh: /var/www/rt/local/plugins/RT-Extension-TicketPDF/bin/wkhtmltopdf:
Invalid argument
or even allow itself to be ktrace'd:
rt@rt$ ktrace
/var/www/rt/local/plugins/RT-Extension-TicketPDF/bin/wkhtmltopdf
ktrace: exec of
'/var/www/rt/local/plugins/RT-Extension-TicketPDF/bin/wkhtmltopdf'
failed: Invalid argument
At least ktrace(8) told me it was an exec(3) problem. So off I go to
exec(3) which leads me to execve(2), wherein I see:
[EINVAL] argv did not contain at least one element.
errno(2) confirms the english expansion of "Illegal argument"
file(1) gives me a clue, but I don't know what to do with it:
rt@rt$ file `locate bin/wkhtmltopdf`
/usr/local/bin/wkhtmltopdf: ELF
64-bit LSB shared object, x86-64, version 1
/var/www/rt/local/plugins/RT-Extension-TicketPDF/bin/wkhtmltopdf: ELF
64-bit LSB executable, x86-64, version 1
where the version in /usr/local/bin is from ports.
the RT::Extension::TicketPDF version is significantly larger, ~4x, which
led me to:
rt@rt$ ldd `locate bin/wkhtmltopdf`
/usr/local/bin/wkhtmltopdf:
Start End Type Open Ref GrpRef Name
0000041737f61000 000004173ac77000 exe 2 0 0
/usr/local/bin/wkhtmltopdf
00000419ee500000 00000419ee599000 rlib 0 1 0
/usr/local/lib/libjpeg.so.70.0
[...elided...]
/var/www/rt/local/plugins/RT-Extension-TicketPDF/bin/wkhtmltopdf:
not a dynamic executable
So... how do I figure out why a static binary (whose build process is
pretty opaque) won't/can't run?
Clueless at this level, my detailed knowledge of how exec worked under
OpenBSD ended in the a.out era.
(oh, the reason I don't use the version from ports? It's too new for
the TicketPDF code. *sigh*)
Thanks for any pointers,
-Adam