Jue Oct 18, 2007 3:09 pm
|
 |
gaby49
Perlero Nuevo

|
Registrado: 09 Jul 2007
Mensajes: 20
|
|
| Perl + Dbxml |
|
|
Hola!
Espero alguien me pueda ayudar.
Estoy insertando archivos xml en la base de datos dbxml con Perl pero me manda un error de "Segmentacion fault" y no sé a qué se refiere exactamente. Bueno, cuando no existe el archivo me lo manda pero ya verificando que exista creo que también porque el índice o llave ya existe pero cómo puedo saber cómo detectarlo. El código es el siguiente:
¡¡¡¡Saludos y Gracias!!!!
| Perl: | my $txn = $oMan-> createTransaction();
eval {
my $txnUpd = $oMan-> createUpdateContext();
my $xmlinput = $oMan-> createLocalFileInputStream($arcXML1);
print "inserta";
$oCont-> putDocument($txn, $arcXML, $xmlinput, $txnUpd);
$txn-> commit();
print "Se agrego el archivo: $arcXML1 \n ";
};
if (my $e = catch std:: exception)
{
warn $e-> getExceptionCode . " " . $e-> what() . "\n";
$txn-> abort();
exit( - 1 );
} |
|
|
|
|

Jue Oct 18, 2007 5:31 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
| Yo usaría el ptrace para saber en qué pasa después de saber primero en qué línea ocurre el fallo de segmentación, ejecutando el código paso a paso, con el debugger. |
|
Vie Oct 19, 2007 11:15 am
|
 |
gaby49
Perlero Nuevo

|
Registrado: 09 Jul 2007
Mensajes: 20
|
|
|
|
|
| Pero que yo sepa no hay debugger en Perl y sé que el error me lo marca en putDocument pero no sé si porque me faltan banderas o no está creado bien el ambiente o qué lo ocasiona. |
|
Vie Oct 19, 2007 12:07 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|
Vie Oct 19, 2007 12:17 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
Vie Oct 19, 2007 1:25 pm
|
 |
gaby49
Perlero Nuevo

|
Registrado: 09 Jul 2007
Mensajes: 20
|
|
|
|
|
| Pues es que en realidad no sé que pasa, ya que cuando le inserto archivo no hay problema con ninguno, pero cuando dos o más personas empiezan a meter archivos marca errores como el de "Segmentation fault" y *** glibc detected *** perl: double free or corruption (out): 0xb7e991b8 *** y con este último ahí se queda trabado. |
|
Vie Oct 19, 2007 2:42 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
| ¿Estás usando Threads? |
|
Vie Oct 19, 2007 2:52 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
| ¿No estarás usando Perl 5.8.7? |
|
Vie Oct 19, 2007 2:59 pm
|
 |
gaby49
Perlero Nuevo

|
Registrado: 09 Jul 2007
Mensajes: 20
|
|
|
|
|
| La versión es 5.8.8 y al programa le quite las transacciones y me ocasiona solo el error de segmentación. |
|
Vie Oct 19, 2007 4:47 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
| Por lo que leo en los foros... podría ser un bug en la glibc del sistema operativo, si es un Red Hat. Veo que ha salido con otros módulos y en otros tipos de programas, incluso en el juego Frozen Bubble, así que lo más seguro es que sea un fallo de la glibc. |
|
Lun Oct 22, 2007 9:16 am
|
 |
gaby49
Perlero Nuevo

|
Registrado: 09 Jul 2007
Mensajes: 20
|
|
|
|
|
| ¿y eso es muy grave? o ¿cómo se soluciona? |
|

Lun Oct 22, 2007 10:08 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4222
Ubicación: Valladolid, España
|
|
|
|
|
Puede ser muy grave, sí... la glibc es una de las básicas del sistema.
En los foros no he visto nada de actualizar Perl, ya que casi todo el mundo tiene la 5.8.8. Parece que la solución es actualizar el sistema operativo (la glibc) y/o actualizar Perl a la última versión disponible dentro de la 5.8.8 (las distribuciones Perl de las diferentes distribuciones Linux se suelen compilar basándose en la glibc actual, así que es cuestión de actualizar los dos).
Por ejemplo, en un Linux Debian viejo que tengo por aquí, haciendo un perl -v sale que es la versión 5.8.8 compilada con la glibc 2.3.6. En el perl del Cygwin es también 5.8.8 pero con la librería compilada estáticamente, mientras que la del Perl en Windows es la msvcrt también compilada estáticamente. |
|

Lun Oct 29, 2007 11:27 am
|
 |
Jenda
Perlero Frecuente

|
Registrado: 29 Oct 2007
Mensajes: 108
Ubicación: Praga, Republica Checa
|
|
| Perl debugger |
|
|
| No va a ayudar en ese caso, pero te puede gustar PTKDB (http://ptkdb.sourceforge.net/), un debugger gráfico. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|