• Publicidad

Bus Error - core dumped en SUN Solaris con DBI

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Bus Error - core dumped en SUN Solaris con DBI

Notapor Therion777 » 2010-09-20 17:23 @766

Buen día, tengo una duda.

Tengo mi programa que contacta a una BD, por medio de use DBI;

Este mismo programa funciona bien en otros equipos pero en mi máquina truena.

Tengo Perl
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
 This is perl, v5.8.4 built for sun4-solaris-64int
(with 31 registered patches, see perl -V for more deta
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
en un Solaris, con Oracle 9.0.1.

El Oracle funciona bien: puedo entrar por comandos y me responde la base de datos.

Aquí la cosa es que cada vez que ejecuto mi programa sale
Bus Error - core dumped

y todos los demás módulos funcionan menos el DBI.

Quiero descartar que el Perl sea el problema, tal vez sea problema de permisos, o algo así.

¿Qué me pueden decir sobre esto?

Saludos.
Therion777
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-08-30 15:30 @687

Publicidad

Re: Bus Error - core dumped

Notapor explorer » 2010-09-21 03:31 @188

Una instalación de Oracle debería venir con su propia versión de Perl y de DBI. Mira en los directorios de instalación de Oracle.

DBI es un módulo muy común en Perl, así que deberías tenerlo disponible ya compilado como paquete de software instalable para tu Solaris. Usa el sistema de gestión de paquetes software del sistema, que debería aparecer DBI como software.

Es más... la instalación de la propia distribución de Perl debería venir acompañada del módulo DBI.

Los problemas suelen venir porque Oracle usa una versión de Perl distinta de la del sistema. Es importante que los programas cuenten con un 'use lib "<ruta>";' para indicar dónde buscar primero los módulos que necesita. Así, si quieres trabajar con el perl (ejecutable) de Oracle, lo normal es usar el DBI que le acompaña, así que usaremos el "use lib ..." para indicar dónde está el DBI que trae el propio Oracle. Si quieres usar el perl del sistema, no tendrás que hacer nada porque por defecto usará el DBI del sistema.

Para comprobar cuál es el que falla, puedes probar con algo como esto:

perl -MDBI -e 1

Con esto estás probando el perl/DBI del sistema. Con

/directorio/oracle/donde/esta/perl -I/directorio/oracle/donde/esta/modulos/perl -MDBI -e 1

comprobamos el perl/DBI que trae Oracle.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Bus Error - core dumped en SUN Solaris con DBI

Notapor Therion777 » 2010-09-21 11:23 @516

Creo que el problema no es tanto el DBI si no más bien el Oracle

* En esta máquina no tengo instalado como tal el DBI::Oracle; lo que hice fue ponerlo en un directorio y darle la ruta al programa
use lib "directorio";

* Un amigo hizo lo mismo y me paso sus archivos pero esto es lo que sale:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
21/09/2010 10:30
DBI object version 1.58 does not match $DBI::VERSION 1.605 at /usr/perl5/5.8.4/lib/sun4-solaris-64int/DynaLoader.pm line 253.
BEGIN failed--compilation aborted at /temporal/lib/DBI.pm line 263.
Compilation failed in require at carga_sql.pl line 8.
BEGIN failed--compilation aborted at carga_sql.pl line 8.
Fin 21/09/2010 10:30
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


* Por lo que me propuse instalar el DBD-Oracle-1.25-withoutworldwriteables
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ perl Makefile.PL
Using DBI 1.58 (for perl 5.008004 on sun4-solaris-64int) installed in /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI/
Configuring DBD::Oracle for perl 5.008004 on solaris (sun4-solaris-64int)

WARNING: If you have problems you may need to rebuild perl with threading enabled.
WARNING: META_MERGE is not a known parameter.
Checking if your kit is complete...
Looks good
'META_MERGE' is not a known MakeMaker parameter name.
Ignoring LD_RUN_PATH='/archive/oracle/product/9.0.1/db_1/lib32:/lib' in environment
LD_RUN_PATH=/archive/oracle/product/9.0.1/db_1/lib
Using DBD::Oracle 1.25.
Using DBD::Oracle 1.25.
Using DBI 1.58 (for perl 5.008004 on sun4-solaris-64int) installed in /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI/
Writing Makefile for DBD::Oracle
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


*** Al parecer todo está bien, pero *******
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ /usr/ccs/bin/make
  2. cp Oracle.pm blib/lib/DBD/Oracle.pm
  3. cp oraperl.ph blib/lib/oraperl.ph
  4. cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h
  5. cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h
  6. cp Oraperl.pm blib/lib/Oraperl.pm
  7. cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h
  8. cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm
  9. cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm
  10. cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm
  11. /usr/bin/perl -p -e "s/~DRIVER~/Oracle/g" /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI/Driver.xst > Oracle.xsi
  12. /usr/bin/perl /usr/perl5/5.8.4/lib/ExtUtils/xsubpp  -typemap /usr/perl5/5.8.4/lib/ExtUtils/typemap -typemap typemap  Oracle.xs > Oracle.xsc && mv Oracle.xsc Oracle.c
  13. cc -c  -I/archive/oracle/product/9.0.1/db_1/rdbms/public -I/archive/oracle/product/9.0.1/db_1/rdbms/demo -I. -I/archive/oracle/product/9.0.1/db_1/precomp/public -I/archive/oracle/product/9.0.1/db_1/rdbms/public -I/archive/oracle/product/9.0.1/db_1/rdbms/demo -I/archive/oracle/product/9.0.1/db_1/plsql/public -I/archive/oracle/product/9.0.1/db_1/network/public -I/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO -xO3 -xspace -xildoff    -DVERSION=\"1.25\"  -DXS_VERSION=\"1.25\" -KPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE"  -DUTF8_SUPPORT -DORA_OCI_VERSION=\"9.0.1.0\" Oracle.c
  14. /usr/ucb/cc:  language optional software package not installed
  15. *** Error code 1
  16. make: Fatal error: Command failed for target Oracle.o
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ /usr/ccs/bin/make test
  2. cc -c  -I/archive/oracle/product/9.0.1/db_1/rdbms/public -I/archive/oracle/product/9.0.1/db_1/rdbms/demo -I. -I/archive/oracle/product/9.0.1/db_1/precomp/public -I/archive/oracle/product/9.0.1/db_1/rdbms/public -I/archive/oracle/product/9.0.1/db_1/rdbms/demo -I/archive/oracle/product/9.0.1/db_1/plsql/public -I/archive/oracle/product/9.0.1/db_1/network/public -I/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/auto/DBI  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -xarch=v8 -D_TS_ERRNO -xO3 -xspace -xildoff    -DVERSION=\"1.25\"  -DXS_VERSION=\"1.25\" -KPIC "-I/usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE"  -DUTF8_SUPPORT -DORA_OCI_VERSION=\"9.0.1.0\" Oracle.c
  3. /usr/ucb/cc:  language optional software package not installed
  4. *** Error code 1
  5. make: Fatal error: Command failed for target `Oracle.o
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Therion777
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-08-30 15:30 @687

Re: Bus Error - core dumped en SUN Solaris con DBI

Notapor explorer » 2010-09-21 11:49 @534

El mensaje de error
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
DBI object version 1.58 does not match $DBI::VERSION 1.605 at /usr/perl5/5.8.4/lib/sun4-solaris-64int/DynaLoader.pm line 253.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
está indicando que el módulo DBI (la parte de Perl, llamado DBI.pm) está intentando cargar la parte DBI compilada (librería estática o dinámica), y se ha encontrado conque corresponden a versiones diferentes.

En concreto, el DBI.pm que estás usando es de la versión 1.605, mientras que la librería es de la 1.58.

Así que... algo está mal instalado, y en mal sitio...

Cuando un programa arranca, el orden de búsqueda de las librerías lo determina la variable especial @INC (puedes ver su contenido. También puedes ver las rutas por defecto haciendo un perl -V) que modificamos con el use lib.

En cuanto al problema "language optional software package not installed", quiere decir que el compilador de C no está instalado.

Por otra parte, en la página de DBD::Oracle, hay, cerca del principio, una matriz de compatibilidad, en la que se ve que el Oracle 9.0.1 no es compatible con el DBD::Oracle 1.25 o superior. Necesitas un Oracle igual o superior al 9.2.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Bus Error - core dumped en SUN Solaris con DBI

Notapor Therion777 » 2010-09-21 12:56 @580

Concuerdo, Explorer

Así que bajé el DBD-Oracle-1.17.
Lo guardé en un directorio, (apunté el lib hacia este directorio) y corrí el programa y sale:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1.  21/09/2010 12:57
  2. install_driver(Oracle) failed: Can't locate loadable object for module DBD::Oracle in @INC (@INC contains: /temporal/lib /usr/perl5/5.8.4/lib/sun4-so
  3. laris-64int /usr/perl5/5.8.4/lib /usr/perl5/site_perl/5.8.4/sun4-solaris-64int /usr/perl5/site_perl/5.8.4 /usr/perl5/site_perl /usr/perl5/vendor_perl/5.8.4/sun4-solaris
  4. -64int /usr/perl5/vendor_perl/5.8.4 /usr/perl5/vendor_perl .) at (eval 3) line 3
  5. Compilation failed in require at (eval 3) line 3.
  6. Perhaps a module that DBD::Oracle requires hasn't been fully installed
  7.  at carga_sql.pl line 26
  8. Fin 21/09/2010 12:57
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Algo anda muy, muy mal...
Otra cosa es que yo instalé el Oracle, pero solo instalé el cliente, ¿será que tengo que instalar toda la aplicación?
Therion777
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-08-30 15:30 @687

Re: Bus Error - core dumped en SUN Solaris con DBI

Notapor explorer » 2010-09-21 13:19 @596

Es que sigo diciendo que me parece increíble que tengas que bajar e instalar el DBD::Oracle... DEBERÍA estar en el directorio de Oracle... ¿no es así?

Busca por DBD/Oracle.pm en los directorios de Oracle.

P.D. Volviendo a releer tu último mensaje, parece que esa puede ser la razón, que instalando el cliente no instale las herramientas de programación.

Voy a mirar en Windows, qué aspecto tiene un cliente de Oracle. Sé que instala el perl, pero no sé si instala todo lo demás.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Bus Error - core dumped en SUN Solaris con DBI

Notapor Therion777 » 2010-09-29 13:19 @597

Pues bueno, instalé Perl v5.8.8.
He instalé Oracle completo por si las dudas.

Pero ahora me sale el error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ld.so.1: perl5.8.8: fatal: relocation error: file temporal/lib/auto/DBD/Oracle/Oracle.so: symbol OCINlsEnvironmentVariableGet: referenced symbol not found
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Alguna pista?
Therion777
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2010-08-30 15:30 @687

Re: Bus Error - core dumped en SUN Solaris con DBI

Notapor explorer » 2010-09-29 15:22 @682

El error dice se ha intentado buscar el símbolo OCINlsEnvironmentVariableGet dentro del fichero temporal/lib/auto/DBD/Oracle/Oracle.so, y no se ha encontrado.

El porqué, no lo sé. Me sigo remitiendo a lo comentado en los mensajes anteriores: si has instalado un Oracle entero "debería" funcionar con el intérprete de Perl que trae.

Es muy raro todo esto... yo empezaría a pensar en usar la herramienta strace para saber, realmente, qué programas, qué librerías, se están intentando usar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron