Segmentation fault lié à un cast
Bonjour,
Je suis en train de peaufiner un crypteur par courbe elliptique en mettant dans celui-ci un ... crackeur :mrgreen:. C'est un crackage par force brute (de toute façon on peut pas faire mieux :aie:). Pour améliorer la vitesse de crackage j'ai eu l'idée d'utiliser plusieurs threads ce qui distribue les calculs sur les coeurs du processeur (autant que ça tourne à 100%).
Le problème, c'est que ça plante: un bel segmentation fault dans les règles de l'art du crash.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
template<typename T>
class InfoPackage
{
public:
InfoPackage(){}
InfoPackage(Cracker<T>* cracker, User<T>* user, User<T>* connectedUser, int offset, int iterateBy):
m_cracker(cracker),
m_user(user),
m_connectedUser(connectedUser),
m_offset(offset),
m_iterateBy(iterateBy)
{}
Cracker<T>* m_cracker;
User<T>* m_user;
User<T>* m_connectedUser;
int m_offset;
int m_iterateBy;
};
template<typename T>
void* CrackKey(void* infos)
{
InfoPackage<T> informations = *(static_cast<InfoPackage<T>*>(infos));
Cracker<T>* cracker = informations.m_cracker;
std::pair<T,T> point = cracker->m_connections[informations.m_user].m_refPoint;
std::pair<T,T> researchedPoint = informations.m_user->GetComputedPoint(informations.m_connectedUser);
EllipticCurve<T> curve = cracker->m_connections[informations.m_user].m_curve;
for(long long i = informations.m_offset;; i+= informations.m_iterateBy)
{
cracker->m_mutex.Lock();
if(cracker->keyA != 0)
{
cracker->m_mutex.UnLock();
break;
}
if(curve.QuickExponentiation(i, point) == researchedPoint)
{
cracker->keyA = i;
break;
cracker->m_mutex.UnLock();
return (void*)0;
}
}
} |
Ce n'est pas du aux boucles mais aux opérations précédentes.
Voila, si vous pouviez m'aider.
Merci.