J'ai cette pile d'appels étrange et je suis perplexe pour comprendre pourquoi.Étrange pile d'appel, pourrait-il être un problème dans l'utilisation d'openssl par asio?
Il me semble que les appels asio ouvrent ssl read et obtiennent une valeur de retour négative (-37). Asio semble ensuite essayer de l'utiliser dans la fonction memcpy.
La fonction qui provoque cette pile d'appels est utilisée des milliers de fois sans cette erreur.
Cela arrive rarement, environ une fois par semaine.
ulRead = (boost::asio::read(spCon->socket(), boost::asio::buffer(_requestHeader, _requestHeader.size()), boost::asio::transfer_at_least(_requestHeader.size()), error_));
Notez que la taille de l'en-tête de la requête est toujours de 3 octets.
Quelqu'un pourrait-il nous éclairer sur les raisons possibles?
Note: J'utilise boost asio 1,36
Voici le crash de la pile d'appel de plantage se produit dans memcpy à cause de l'énorme « count »:
R. Bondy @ Brian: Est-il BIO_read retour -37? – user7116
Je ne suis pas sûr à ce sujet, mais 4294967259 comme un nombre signé serait -37 –
@Brian R. Bondy: Il semble que quelque chose de * mauvais * se produit dans _EVP_CIPHER_set_asn1_iv. Peut-être que les données quelque part se font lentement saccager (vous avez noté que cela arrive graduellement avec le temps). Finalement menant à la mort prématurée de memcpy. – user7116