Appel printf ne fonctionne pas dans l'environnement asmjit

yann458 Messages postés 456 Date d'inscription dimanche 29 mai 2011 Statut Membre Dernière intervention 13 mars 2024 - Modifié le 18 févr. 2024 à 23:25
BoBot Messages postés 2980 Date d'inscription mardi 4 juillet 2023 Statut Modérateur Dernière intervention 23 mai 2024 - 20 févr. 2024 à 21:02

Bonjour,

Bonjour,

Je suis sur un projet qui emet des opcodes par l'api asmjit ,
mon projet emet un opcode qui appelle jitpushv qui lui appelle un printf et
j'ai une exception :

Exception thrown at 0x00007FF985ECE00B (cemujitcpu_x64.dll) in TestSolve.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.
>    cemujitcpu_x64.dll!common_vfprintf::__l2::<lambda>() Line 41    C++
     cemujitcpu_x64.dll!__crt_seh_guarded_call<int>::operator()<<lambda_d854c62834386a3b23916ad6dae2782d>,int <lambda>(void) &,<lambda_4780a7ea4f8cbd2590aec34bd14e2bbf>>(__acrt_lock_stream_and_call::__l2::<lambda_d854c62834386a3b23916ad6dae2782d> && setup, common_vfprintf::__l2::int <lambda>(void) & action, __acrt_lock_stream_and_call::__l2::<lambda_4780a7ea4f8cbd2590aec34bd14e2bbf> && cleanup) Line 204    C++
     [Inline Frame] cemujitcpu_x64.dll!__acrt_lock_stream_and_call(_iobuf * const) Line 297    C++
     [Inline Frame] cemujitcpu_x64.dll!common_vfprintf(const unsigned __int64 options, _iobuf * const stream, const char * const format, __crt_cached_ptd_host & arglist, char * const) Line 37    C++
     cemujitcpu_x64.dll!__stdio_common_vfprintf(unsigned __int64 options, _iobuf * stream, const char * format, __crt_locale_pointers * locale, char * arglist) Line 61    C++
     [External Code]    
     cemujitcpu_x64.dll!_jitpushv(_machine_ * m) Line 1010    C++
     cemujitcpu_x64.dll!jitpushv(_machine_ * m) Line 1019    C++


Platform : x64

Je cherche en vain.
Qu'est que je dois ajouter pour que cela fonctionne ??

Autre question :
Sur quel forum je pourrais poser la question pour avoir plus de réponses ?
Merci

Linux / Firefox 115.0

2 réponses

mamiemando Messages postés 33124 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mai 2024 7 753
Modifié le 20 févr. 2024 à 13:08

Bonjour,

Ton erreur signifie en gros que tu as une erreur mémoire. Mais sans un exemple minimal pour reproduire le problème difficile d'en dire plus.

Tu peux probablement utiliser un débogueur pour détecter la ligne qui plante et à partir de là essayer de comprendre pourquoi elle plante (en vérifiant par exemple la valeur de ses paramètres).

Ton titre semble suggérer que le problème est lié à printf. Peux-tu reporter la ligne de code concernée ? Que valent ses paramètres ?

Bonne chance

1
BoBot Messages postés 2980 Date d'inscription mardi 4 juillet 2023 Statut Modérateur Dernière intervention 23 mai 2024 187
20 févr. 2024 à 21:02
Bonjour !
C'est Bobot, l'IA du forum !
Il semble que le problème soit dû à une violation d'accès, peut-être liée à une tentative d'accès à une adresse mémoire non allouée. Sans le code source, il est difficile de déterminer l'exactitude de l'erreur.

L'API asmjit est une bibliothèque de bas niveau et utilise directement des adresses mémoire. Si vous n'avez pas initialisé correctement une variable ou si vous tentez d'accéder à une mémoire que vous n'avez pas allouée, vous pouvez faciliter obtenir une violation d'accès.

Pour résoudre ce problème, vous devez écrire du code soigné et éviter les actions non sécurisées telles que l'accès à des zones de mémoire non allouées.

Concernant votre autre question, un bon forum pour poser ces types de questions serait Stack Overflow, qui possède une large communauté de développeurs actifs qui pourraient vous aider à résoudre votre problème.

-3