Gracias por tu respuesta Gilberto<div><br></div><div>El tema creo que viene por otro lado,</div><div>Estoy haciendo un servidor que usa epoll. Y cuando quiero esperar por un evento, </div><div>llamo a la funcion epoll_wait</div>
<div>El tema es que, por alguna razon (si alguien me puede aclarar porque), cuando ejecuto </div><div>desde gdb, la funcion termina como si hubiera un error EINTR.</div><div>Pero esta es una situacion, al parecer, conocida. Y vi ejemplos donde especificamente se</div>
<div>pregunta si el error es EINTR, que vuelva a ejecutar la funcion epoll_wait.</div><div><br></div><div>Con esto puedo evitar la excepcion dentro de gdb.</div><div><br></div><div>Saludos<br><br><div class="gmail_quote">
El 29 de enero de 2011 13:52, Gilberto Cuba Ricardo <span dir="ltr"><<a href="mailto:gilberto.cuba@ucp.ho.rimed.cu">gilberto.cuba@ucp.ho.rimed.cu</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hola,<br>
<br>
Stack Overflow escribió:<br>
<div class="im">> Hola lista,<br>
<br>
> Estuve bastante tiempo buscando lista de correo en castellano sobre programacion avanzada en C/C++<br>
> Espero aprender y ayudar en todo lo que pueda.<br>
> Soy programador C, no tanto C++. Trabajo mas que nada en ambientes Unix/Linux<br>
<br>
</div>Bienvenido a la lista.<br>
<div class="im"><br>
> Tengo una consulta sobre programacion con threads.<br>
<br>
</div>No soy experto en el tema, pero sí algo atrevido. ;-)<br>
<div class="im"><br>
> El punto es que estoy portando un servidor que funciona en Windows,<br>
> a Linux. Como todo servidor, usa sockets y threads<br>
> Cuando lo ejecuto, no funciona como espero. Entonces quiero usar el debugger para seguirlo.<br>
> En Linux usamos gdb.<br>
<br>
</div>En Windows también se usa, con el MinGW32.<br>
<div class="im"><br>
> La cosa es que cuando ejecuto el programa dentro de gdb, obtengo un<br>
> SIGSEV en un thread, pero el proceso continua corriendo (otro thread continua ejecutando).<br>
<br>
> Lo extraño es que si ejecuto el programa fuera del gdb, no se ve<br>
> ningun mensaje que indique que hubo una excepcion SIGSEV.<br>
><br>
> Si alguien tiene experiencia en este tipo de desarrollos, le<br>
> agradeceria que me aclare este comportamiento.<br>
<br>
</div>Realmente no tengo mucha idea de por qué pudiera ser, pero me ha<br>
pasado eso mismo en algunas ocasiones. Mi idea al respecto es que en<br>
el código hay algo que dentro de su funcionamiento no explota<br>
(SIGSEGV), porque no se accede digamos a una ubicación de memoria<br>
inválida, pero cuando utilizamos el gdb, este sí trata de barrer todos<br>
los estados y valores de la variables, y ahí es donde se presenta el<br>
error que conocemos. Claro, a no ser que estuviéramos en presencia de<br>
un bug en el gdb.<br>
<div class="im"><br>
> Debo confiar en lo que indica el gdb o lo que indica el programa que ejecuto sin el debugger ?<br>
<br>
</div>Yo confiaría en el gdb, aunque no ciegamente. Como también, si veo que<br>
se me hace muy difícil debuguearlo con el gdb, porque obtengo el<br>
SIGSEGV muy rápido antes de atrapar el error en alguna línea/posición<br>
del programa anterior, pues me dedico entonces a realizar una cacería<br>
exhaustiva con printf()/std::cout seguido de un flush, para ir<br>
teniendo idea de por dónde va la cosa.<br>
<div class="im"><br>
> Realmente puede haber un SIGSEV en un thread y el programa continua ejecutando ?<br>
<br>
</div>No sabría que decirte, si el gdb no controlara cómo cerrarlo en este<br>
tipo de casos (que me parece que sí), me imagino entonces que continue<br>
su ejecución.<br>
<div class="im"><br>
> Bueno, saludos y muchas gracias<br>
> SO32<br>
<br>
</div>--<br>
Saludos,<br>
 Gilberto Cuba Ricardo<br>
<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br></div>