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
No comments:
Post a Comment