Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Perl + Dbxml

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Jue Oct 18, 2007 3:09 pm
gaby49
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Jul 2007
Mensajes: 20
Perl + Dbxml Responder citando

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!!!!
Wink
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 );
     }
Mensaje Jue Oct 18, 2007 5:31 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4100
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Vie Oct 19, 2007 11:15 am
gaby49
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Jul 2007
Mensajes: 20
Responder citando

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.
Mensaje Vie Oct 19, 2007 12:07 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

gaby49 escribió:
Pero que yo sepa no hay debugger en perl y se que el error me lo marca en putDocument pero no se si porque me faltan banderas o no esta creado bien el ambiente o que lo ocasiona.


Usando el debugger de Perl:
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perldebtut.pod
Mensaje Vie Oct 19, 2007 12:17 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4100
Ubicación: Valladolid, España
Responder citando

Para ejecutar el debugger de Perl, tienes que hacer:

bash:
perl -d tuprograma.pl


Aquí tienes una tarjeta de referencia. También lo tienes en perldoc perldebug, perldoc perldebtut y perldoc perldebguts.
Mensaje Vie Oct 19, 2007 1:25 pm
gaby49
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Jul 2007
Mensajes: 20
Responder citando

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.
Mensaje Vie Oct 19, 2007 2:42 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4100
Ubicación: Valladolid, España
Responder citando

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

¿No estarás usando Perl 5.8.7?
Mensaje Vie Oct 19, 2007 2:59 pm
gaby49
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Jul 2007
Mensajes: 20
Responder citando

La versión es 5.8.8 y al programa le quite las transacciones y me ocasiona solo el error de segmentación.
Mensaje Vie Oct 19, 2007 4:47 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4100
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Lun Oct 22, 2007 9:16 am
gaby49
Perlero Nuevo
Perlero Nuevo
Registrado: 09 Jul 2007
Mensajes: 20
Responder citando

¿y eso es muy grave? o ¿cómo se soluciona?
Mensaje Lun Oct 22, 2007 10:08 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4100
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Lun Oct 29, 2007 11:27 am
Jenda
Perlero Frecuente
Perlero Frecuente
Registrado: 29 Oct 2007
Mensajes: 105
Ubicación: Praga, Republica Checa
Perl debugger Responder citando

No va a ayudar en ese caso, pero te puede gustar PTKDB (http://ptkdb.sourceforge.net/), un debugger gráfico.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group