Author Topic: Los segmentation faults me persiguen ... ;->  (Read 8738 times)

Offline OriolLehmkuhl

  • PixInsight Addict
  • ***
  • Posts: 177
    • http://www.astrosurf.com/brego-sky
Los segmentation faults me persiguen ... ;->
« on: 2007 December 08 04:42:24 »
Buenas...,

Dentro de poco estareis muy artos de mi, a este ritmo,  :lol:  :lol:  :lol: Bueno, las dos cosas que estoy intentando no han tenido mucho éxito.

Me explico lo primero es externamente a la PCL, abrir y cerrar imagenes. Puedo leer imagenes sin problemas, usando el TIFFReader:

Code: [Select]

try {
 
TIFFReader file;

file.Open("pacman_ngc281.tiff");

cout<<" es pot llegir "<<file.IsReader()<<endl;

file.Close();

} catch(...) {

cout<<" estic cardat "<<endl;
}


Pero si intento generar una instancia de un imagen siempre tengo un 'sementation fault' sin compasión  :cry:  :cry: en el limte seria algo así:

Code: [Select]

try {

UInt16Image img(2048,2048);

} catch(...) {

cout<<" estic cardat "<<endl;
}


La violacion de segmento se produce a saco, sin generarse ninguna excepción (del tipo bad-alloc, etc...). Bueno, supongo que se tendra que incialicar alguna cosa que desconozco antes de generar una imagen ?

El segundo infierno es el tema de los módulos. Bueno, copiando el módulo Image, he generado un módulo nuevo dentro de la PCL, el módulo compila y se supone que solamente tiene el NewImage como componente. Pixinight lo reconoce, pero cuando s inicializa peta  :oops: :

http://wrunch.com/images/bwy1197116939f.jpg
http://wrunch.com/images/klz1197116975s.jpg

Bueno, alguien tiene alguna idea que me pueda ser de ayuda?

Gracias y un saludo,

Oriol

Offline OriolLehmkuhl

  • PixInsight Addict
  • ***
  • Posts: 177
    • http://www.astrosurf.com/brego-sky
Los segmentation faults me persiguen ... ;->
« Reply #1 on: 2007 December 09 12:17:32 »
Hola,

por si sirbiera de ayuda a alguien, el segmentation fault que tengo al intentar instanciar una Image lo he acotado a uno de sus 'padres' el ImageGeometry. El constructor por defecto de esta clase deriva en la violación de segmento  :cry:
De hecho he intentado instanciar solamente el ImageGeometry y peta...., estoy bastante convencido que por algun lado del *.h del ImageGeometry o en su constructor (aunque en este no veo nada raro) se llama alguna variable global que no debo tener debidamente inicializada  :oops:
Bueno, a ver si alguien se anima, y me dice que puedo hacer  :wink:

Un saludo,

Oriol

Offline Carlos Milovic

  • PTeam Member
  • PixInsight Jedi Master
  • ******
  • Posts: 2172
  • Join the dark side... we have cookies
    • http://www.astrophoto.cl
Los segmentation faults me persiguen ... ;->
« Reply #2 on: 2007 December 09 13:14:21 »
Bueno, en mi experiencia, la mayoria de los problemas de instalacion de modulos vienen de definir algo mal en Process.cpp. Sin embargo, como aqui se supone que estas usando un modulo que "completo" compila, es probable es que borraste algo de mas, o te falto borrar algo ;)
Creo que lo mejor es que partas compilando 1 solo proceso, haciendo unos archivos Module.h y .cpp apropiados. No deberias tener que borrar nada mas, o agregar, en ningun otro par. Hasta donde se, los codigos de los procesos no estan interactuando entre si.

A proposito, aunque el funcionamiento interno es bastante complejo, te recomiendo mirar la carpeta (y el codigo) de GREYCStoration. Si te olvidas de las carpetas con los proyectos, y la que tiene la biblioteca CImg, es un prototipo ideal de un proceso/modulo que tiene de todo :)


Suerte, y mira tus Module.*, comparandolos con los de GREYCStoration.
Regards,

Carlos Milovic F.
--------------------------------
PixInsight Project Developer
http://www.pixinsight.com

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Los segmentation faults me persiguen ... ;->
« Reply #3 on: 2007 December 09 13:57:07 »
Hola Oriol

Me despierto momentáneamente de encriptaciones AES y otras lindezas por el estilo para echarte una mano ;)

El problema es básicamente que no puedes utilizar la mayoría de clases de PCL fuera del contexto de un módulo de PixInsight; por ejemplo en una aplicación independiente -hay razones bastante obvias para que esto sea así, como comprenderás. Efectivamente, el problema en este caso es que hay una serie de datos globales que sólo la aplicación principal sabe cómo inicializar.

Hay algunas clases relativamente sencillas que sí pueden funcionar fuera de un módulo, pero no puedes instanciar Generic2DImage<P> (o especializaciones) si no estás ejecutando código dentro de un módulo "bendecido" por el núcleo de la plataforma.

Así que lo primero que tienes que hacer es tener un módulo capaz de instalarse correctamente.

El error que obtienes ("Module initialization failed") significa que es tu propio módulo el que está reportando un error de instalación. Este error en particular indica que hay algún componente en tu módulo que no se está inicializando correctamente. Con toda probabilidad hay un componente (un proceso o una interfaz por ejemplo) que está lanzando una excepción en su constructor.

Como te dice Carlos, lo ideal es que empieces con el esqueleto de un módulo sencillo. GREYCstoration es una buena elección, siempre que lo despojes de toda su capacidad de proceso y lo dejes sólo en el armazón del módulo.

Si quieres sube tu código a algún sitio y así le podremos echar un vistazo para diagnosticar el problema.

Tranquilo, es normal tener estos "sustos" al principio ;)
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline OriolLehmkuhl

  • PixInsight Addict
  • ***
  • Posts: 177
    • http://www.astrosurf.com/brego-sky
Los segmentation faults me persiguen ... ;->
« Reply #4 on: 2007 December 09 14:56:32 »
Hola gracias a los dos,

Bueno, ahora voy entendiendo los problemas, je,je,je  :wink: Parece ser que el problema del módulo que había hecho era el ID, yo había cogido uno que ya exisitía   :oops: Así que hasta que no he desinstalado el módulo con el que compartia ID no he podido instalar el mio :evil: Bueno cagada de principiante  :roll:

Ahora, cual es el ID que tendría que poner para que la aplicación lo reconozca como válido ? (de momento pongo un repetido para ir tirando :wink: )

Lo siguiente es generar algun diálogo que empieze a hacer algo por la consola. Bueno, gracias por la ayuda y a ver como se desarolla todo esto  :roll:

Un saludo,

Oriol

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Los segmentation faults me persiguen ... ;->
« Reply #5 on: 2007 December 09 15:27:48 »
Hola Oriol

Sí, efectivamente los identificadores de módulo han de ser únicos. De momento puedes devolver un identificador nulo, con lo cual estarás haciendo un módulo de desarrollo. Estos módulos son tratados de forma un poco especial (menos estricta) por la aplicación, y pueden instalarse sin problemas siempre que el usuario no los prohíba explícitamente con Edit > Security Settings (opción "Allow development module versions").

Suponiendo que tu módulo se llame OriolModule, deberías hacer esto:

Code: [Select]
const char* OriolModule::UniqueId() const
{
   return 0;
}


Espero que así te funcione.
Juan Conejero
PixInsight Development Team
http://pixinsight.com/

Offline OriolLehmkuhl

  • PixInsight Addict
  • ***
  • Posts: 177
    • http://www.astrosurf.com/brego-sky
Los segmentation faults me persiguen ... ;->
« Reply #6 on: 2007 December 10 08:23:30 »
Hola Juan,

he probado de retornar un campo nulo en el UniqueId(), pero el PI se raya si el módulo al cuál habia robado el anterior ID está activo  :oops: Bueno, no te preocupes, intiuitivamente (a veces me paso con mi intuición) es como si se hubiese generado algun tipo de base de datos des del PI y por eso el cambio no ha surgido efecto.

Como te decia no te preocupes, ya se que andais con mucho trabajo por el tema del lanzamiento, y tal como lo veo, en el punto en que estoy, puedo ir haciendo mis pinitos. Cuando tenga la versión comercial entre manos, ya me preocupare para que se carguen correctamente mis módulos en el PI.

Por cierto animos con los pasos finales que os quedan :P , en casa ya nos hemos hecho la idea que el PI STD será uno de nuestras compras navideñas  :wink:

Un saludo,

Oriol

Offline Juan Conejero

  • PTeam Member
  • PixInsight Jedi Grand Master
  • ********
  • Posts: 7111
    • http://pixinsight.com/
Los segmentation faults me persiguen ... ;->
« Reply #7 on: 2007 December 13 12:35:53 »
Muchas gracias Oriol. No sabes cómo agradezco tu comprensión, porque ciertamente esta etapa final es extremadamente estresante. Bien, esperemos que todo esto haga posible que podamos funcionar mínimamente y seguir desarrollando PixInsight  :wink:
Juan Conejero
PixInsight Development Team
http://pixinsight.com/