Informix - Error en linux

 
Vista:

Error en linux

Publicado por Alberto (1 intervención) el 19/07/2005 23:15:42
Tengo el siguiente codigo dentro de un modulo 4gl.

whenever error continue
let sentsql = " lock table ", tabla_a_lock, " in share mode; "
prepare prep_exe from sentsql
execute prep_exe
whenever error stop

Donde tabla_a_lock es una variable que representa el nombre de la tabla a lockear.
Se ejecuta sin problemas, pero por pantalla me tira la siquiente leyenda cuando se completa la linea que dice "execute prep_exe".

free(): invalid pointer 0xbffff8d0!

La version de Informix.
INFORMIX-4GL Version 7.30.UC1

Corre sobre.
Linux debian 2.4.27-1-386 #1 Fri Sep 3 06:24:46 UTC 2004 i686 GNU/Linux

Si alguien me puede ayudar con esto se lo agradezco.

Saludos
Alberto

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en linux

Publicado por Manu (28 intervenciones) el 03/08/2005 12:17:15
y si pruebas haciendo
free prep_exe
al final
?

La variable sentsql esta declarada con espacio suficiente para contener lo que recoge y despues se ejecuta?

No tiene nada mas el programa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en linux

Publicado por Alberto (12 intervenciones) el 03/08/2005 15:40:25
Hola Manu.
Es un modulo para lockear tablas, lo que le paso es el nombre de la tabla a lockear.
Ahora bien, si a ese modulo lo corro de la siguiente manera no tengo error.
whenever error continue
lock table nombre_de_la_tabla in share mode
whenever error stop

Pero de esta forma, necesito una función para cada tabla que tenga que lockear, que son unas 50 tablas.
La variable sentsql tiene espacios suficiente.

Atte.
Alberto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en linux

Publicado por Manu (28 intervenciones) el 03/08/2005 16:44:49
Seguro que tiene espacio suficiente?
Cuales son los tamaños de tabla_a_lock y de sentsql ?

Has probado free prep_exe ?

Otra posible prueba sería hacer

let sentsql = " lock table NOMBREDEALGUNATABLACONCRETA in share mode; "
prepare prep_exe from sentsql
execute prep_exe

y a ver si salta el mismo error (asi descartamos tema de espacio de variables).

Ten en cuenta que el error podría deberse también a otra zona de código, pero te salta al hacer esta asignación. Los temas de reservas de memoria son bastante complejos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en linux

Publicado por alberto (12 intervenciones) el 03/08/2005 21:32:46
sentsql char(100),
tabla_a_lock char(20)

Bueno, te cuento que probé el free e igual me da el error. No way Manu.
Y pasa hacer el ejemplo que me pones es lo mismo que no usar el prepare y hacer una función por cada tabla a lockear.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en linux

Publicado por Manu (28 intervenciones) el 04/08/2005 08:45:39
Como te decia antes el problema puede ser de memoria y estar en otro sitio, pero saltarte en ese punto.
Yo probaria a hacer un programita que haga SOLAMENTE ese trozito de codigo. Sin ninguna otra funcion (excepto el main, claro) ni otras declaraciones/asignaciones. No deberia dar el fallo. Si sigue dando el fallo empezaria a creer que es algun problema entre linux e Informix.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en linux

Publicado por alberto (12 intervenciones) el 04/08/2005 15:52:58
Buena Idea Manu. pero el error persiste, es decir, se procesa bien, pero el sistema operativo no libera bien la memoria y tira el error por pantalla, lo cual es muy molesto.
Creo que voy a tenes que hacer una función por cada tabla a lockear.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar