Tengo un código complejo de C++.¿Cómo se puede depurar 'Stack smashing detected'?
Es un programa FastCGI, utilizando http://althenia.net/fcgicc
Cuando pregunto por una dirección URL muuucho, me sale
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
para la vida real, no es un problema ya que nunca se utilizan URLs tanto tiempo, pero significa que cualquiera puede terminar mi servidor ... No me gusta eso.
¿Hay alguna herramienta (y cómo usarla) para averiguar dónde aparece el problema?
EDIT: SOLVIDO
Ok resolved.
que estaba haciendo
int len;
char uri[200];
len = strlen(request.params[std::string("REQUEST_URI")].c_str());
printf("%d\n", len);
if (len > 200) return 1;
strcpy(uri, request.params[std::string("REQUEST_URI")].c_str());
Parece que 200 era demasiado altura para la prueba len. En realidad, falla en 194.
Así que lo hice:
if (len > 190) return 1;
Ahora, está bien.
El seguimiento de pila puede darle una pista. – Mahesh
+1 para 'Erreur de segmentation' – trojanfoe
¿Qué es Stack trace? – user1219721