je reçois l'erreur suivante lorsque je tente d'exécuter un script que je n'ai que l'accès d'exécution pour:Réglage ma lib LD_PRELOAD fait certains processus produisent des erreurs de chargeur
uname: symbol lookup error: /home/dumindara/random/sotest/a.out: undefined symbol: dlsym
Ceci est après avoir mis environnement LD_PRELOAD
variable à /home/dumindara/random/sotest/a.out
.
a.out
a une fonction de test malloc
et appelle dlsym
en interne.
Je n'obtiens pas ce problème lors de l'exécution ls
. La plupart des processus donnent cette erreur. Pourquoi cela arrive-t-il et que puis-je faire pour le faire fonctionner?
Il est généralement une bonne idée de définir LD_PRELOAD uniquement pour a.out, plutôt que de modifier l'environnement shell. Dans la plupart des shells UNIX, vous pouvez taper: 'LD_PRELOAD = xyz./A.out'. Sinon, essayez '(LD_PRELOAD = xyz; ./a.out)'. –
@Tony: Je pense que a.out est un objet partagé dans ce cas, malgré son nom mal choisi. L'OP essaie apparemment de surcharger 'malloc()' avec sa propre version, puis de passer directement au malloc réel. – thkala
@tkhala: ah, bonne capture ... serait plus comme 'LD_PRELOAD = \' pwd \ '/a.out program_to_test' alors .... –