logo
logo
Page astronomie

Page de débugage d'Audela
sous GNU/Linux


N'hésitez pas à participer à ce projet ! C'est le début d'une grande aventure de programmation collective.
Les petits caprices d'AudeLA sous Linux :
Problème
Observations réalisées
Solution possible
Pilote libethernaude dépendante de Mdk 9.2.
  • AudeLa fonctionne avec mes perifs astro (Temma, Audine, Ethernaude, Webcam) SI je compile avec Mdk9.2 pour l'utilisation sur Mdk9.2 ou Mdk10. [Rémi Petitdemange]
  • Tester sous Mdk 9.2 le fonctionnement d'ethernaude avec des kernels de version différentes.
  • La liste des prérequis systèmes et réseaux doit être donnée par le concepteur du pilote, de façon à pouvoir corréler les différences entre Mdk 10.x et Mdk 9.2 avec ces nécessités : au 12/2004, libethernaude fait planter Audela !
Bugs dans le pilote ethernaude et/ou dans le panneau acquisition (27 Sep 2004)
  • Bon sous Mandrake 9.2 : ca va pas mal effectivement :-) !!!
    • - j'ai fais entre autre une serie de 15 images noirs 60 sec : à la 15eme image seulement j'ai eu le plantage d'audela (segmentation fault).
    • - Je constate aussi que si on stop l'acquisition d'une pose de x sec le decompte continue de x sec avant de retourner l'image et redonner la main.
  • Avec Mandrake 10.0 :

    Impossible de faire la moindre acquisition, ça plante à chaque fois sur "GO" avec la segmentation fault (avec tes binaire et avec la compil des sources). [Rémi Petitdemange]

Les pilotes des périphériques astronomiques.
  • Audela-1.2.3 compilé sous Mdk 9.2 sinon je retrouve ce fameux message d'erreur avec tous mes perifs astro (Temma, Audine //, Ethernaude, Webcam). [Rémi Petitdemange].
  • J'ai trouve pour les problemes d'obturateurs, c'est tres simples, ce n'est tout simplement pas du tout gerer par le ccd_driver version AK et MM. [Michel Meunier]
Dépendance aux versions de librairies de la distribution Mdk 9.2 au 23/09/2004 :
  1. CCD_driver.so :
    • libdl.so.2
    • libpthread.so.0
    • libc.so.6
    • /lib/ld-linux.so.2
  2. libethernaude.so :
    • libdl.so.2
    • libm.so.6
    • libc.so.6
    • /lib/ld-linux.so.2
Les pilotes de périphériques astronomiques (janvier 2005).
  • cam1 info

    Usage: cam::create

    libcam-driver ?options?

    [BM, Jerome Berthier, Michel Meunier, Denis Marchais]

  • Pour moi cela fonctionne tres bien: je compile audela puis remplace les lib pour ethernaude. [Jerome Berthier]
  • Essaie de charger directement la librairie par la console AudeLA : load (chemin)/libtruc.so [Benoit Maugis]
  • Ajouté les lignes suivantes au fichier system.h du répertoire common [Sylvain Girard pour libaudine and Co] : (inutile dans Audela 1.3.0 [22/01/2006])

    > #define cli() local_irq_disable()
    > #define sti() local_irq_enable()

  • cd /mon/chemin/vers/audela/bin
    export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
    ./audela
    Le linker dynamique et son cache ne serait-il en cause (libdl) ? [Denis Marchais]

J'ai change les cli() enlocal_irq_enable() et les sti() en local_irq_disable, j'ai recompile letout, et maintenant toutes les cameras et telescopes sont bien appele. [Michel Meunier, 08/01/2005].

La dépendance de libethernaude à gcc.
  • Tous ceux qui sont avec le 3.3 : ca marche.
  • Ceux qui sont avec le 2.95 : marche po.
  • Ceux qui sont avec le 3.4 : marche po. (mdk 10)
Dépendance à la version de gcc.

Rendre possible la création d'un binaire statique grâce à la modification des Makefile : "gcc -static...".

La dépendance à la version du kernel ?
  • avec le binaire compilé sur 9.2, ca marche impec avec la mdk10 les cameras (noyau 2.6.3). [Jean-Baptiste BUTET]

Pas de dépendance à la version du noyau.
La dépendance à la version de tcl.tk.
On est obligé de mettre à jour sa version de tcl/tk (ayant des interactions avec gcc) pour pouvoir compiler Audela. Dépendance à la version de tcl/tk.

Rendre possible la création d'un binaire statique grâce à la modification des Makefile : "gcc -static...".

La création du binaire de chaque nouvelle mouture pourrait se faire comme suit :

  • Un membre de l'équipe de développement qui s'occuperait de cette compilation à chaque nouvelle mouture..
  • Une version "passe partout" de gcc et glibc serait utilisée (exemple gcc 2.95.4) pour permettre une exécution du binaire sur toutes les versions de Linux.
Utilisation des fonctions bas niveau. [1] Dans le fichier dev/common/system.h, ajout des lignes :
  • #define cli() local_irq_disable()
  • #define sti() local_irq_enable()

[2] Dans dev/libaudela/src/utils.cpp :

  • Nécessité de commenter sti() et cli().
[2] Semble résulu depuis 1.2.2, mais stoppait net les compilations selon la distribution Linux utilisée.

[1] Remarque de Sylvain Girard pour l'intégration du pilote CCD K2 dans Audela 1.2.3 sous Mdk 10.

Appel de logiciels externes par Audela.
  • fermeture d'Audela sous Debian stable
  • ouverture de la doc pdf sous Debian stable
  • ouverture de la doc html sous Debian stable
Utilisation de Debian testing.
Suavegarde des parametres de l'erthnaude (IP). Remet toujours le n° IP à 127.0.0.123 si l'on fait "Sauvegarder configuration" même si nos paramètres saisis sont différents. Enfin pour la sauvegarde de l'adresse IP qui devient ensuite 127.1.....

Alain a trouve la solution, je l'ai teste cela marche, mais je sais plus ou j'ai fait la transfo, c'etait en direct au telephone ALAIN a l'aide!!. (07-02-05)

Panneau acquisition.
  • J'ai fais entre autre une serie de 15 images noirs 60 sec [Rémi Petitdemange] :
    • À la 15eme image seulement j'ai eu le plantage d'audela (segmentation fault).
    • Je constate aussi que si on stop l'acquisition d'une pose de x sec le decompte continue de x sec avant de retourner l'image et redonner la main.
  • J'ai lance des acqui. de 100 images sans problemes, tout en faisant des tas d'autres trucs en meme temps.
    • Impossible d'annuler une sequence dans le panneau Acquisition - mode continu cela plante Audela.
    • Petit bug en fin de "simulation" des 2 modes d'acqui. (serie et image avec delai intermediaire). Je reporterai ces bugs sur le serveur d'Audela.
    • Idem avec le 2eme mode mais pour la commande .intervalle_continu_2.lab3
    • Sinon l'annulation d'une pose en cours se passe tres bien, le decompte d'arrete aussitot avant lecture du CCD.

    Log de l'erreur:

    invalid command name ".intervalle_continu_1.lab3"
    invalid command name ".intervalle_continu_1.lab3"
    while executing
    ".intervalle_continu_1.lab3 configure -text "$simu1" -background $audace(color,backColor2)"

    invoked from within
    ".intervalle_continu_1.but1 invoke"
    ("uplevel" body line 1)

    invoked from within
    "uplevel #0 [list $w invoke]"
    (procedure "tk::ButtonUp" line 22)

    invoked from within
    "tk::ButtonUp .intervalle_continu_1.but1"
    (command bound to event)

J'ai un blocage avec le test suivant: des poses en continue (sans sauvegarde) de 1s et binning 4x4 et kaf 400. Cela peux passer chez certains et pas chez moi! Le probleme est du a la tache independant qui recoit les trames UDP et qui utilise aussi certaines variables de la tache principale. Suivant la vitesse du processeur, de la taille image, du noyau Linux ....etc a un moment les deux se morde la queue. La seul solution est l'utilisation de mutex.

Plantages :
Mais avant il faut que je mette le doigt exactement la ou cela merdois (c'est pas facile de debuguer du multitache!!! malheureusement je ne peux pas m'en passer). (Michel Meunier, 07-02-2005)
Cela y est, j'ai trouve la vermine et je l'ai corrige. 240000 trames transferees sans probleme, soit environ 240Mo.

Touche F7 :
Normalement cela appelle la fonction AbortExposure
dans le driver CCDDriver.so.DLL. Seulement voila, ce soir en regardant de plus pres, je me suis appercu que cette fonction n'a pas ete programme (pas encore!!) dans le driver!!! Donc si F7 gele Audela, faut pas chercher plus loin. (Michel Meunier, 09-02-2005).


Compilation d'AudeLA et de libethernaude au 31-01-2005 :

En route pour une intégration d'Audela 1.3.0 quelque soit la distribution utilisée :

Conseils à la compilation :

Distribution Mandrake 9.2 Knoppix 3.4 Debian testing Mandrake 10.1 Debian 3.0 Fedora Core 3.0 Suze 9.1/Opensuze 10.0
Caractéristiques
  • kernel 2.4.22
  • gcc 3.3.1
  • libc6 2.3.2
  • kernel 2.4.22
  • gcc
  • libc6 
  • kernel 2.6.8-1 et 2.6.8-3-686
  • gcc 3.3.5
  • make 3.80
  • libc6 2.3.2.dsl-18
  • kernel
  • gcc
  • libc6 
  • kernel 2.4.20
  • gcc 2.95.4
  • libc6 2.2.5-11.5
  • kernel 2.6.10 SMP
  • gcc 3.4.2
  • libc6 2-2-2.10.0
Compilation ? oui oui oui :

make clean
autoconf
./configure
make

oui oui oui oui
Libethernaude (compilée avec sources) fonctionnelle ? oui non oui non non oui oui
Libethernaude fonctionnelle compilée sous ? Mandrake 9.2Knoppix 3.4 Knoppix 3.4 Debian testing - - FC 3.0 Suze 9.1
Binaire fonctionnel Mandrake 9.2
Knoppix 3.4
Knoppix 3.4 Debian testing Mandrake 9.2 Debian 3.0


En route pour une intégration d'Audela 1.4.0 beta1 quelque soit la distribution utilisée :

Distribution Debian 3.1 Sarge (stable) Debian 4.0 Etch (testing)/Ubuntu Mandriva 2000 Mandrake 10.1 Suze 9.1/Opensuze 10.0 Fedora Core 3.0
Caractéristiques :
kernel :

gcc
 :

libc6 :
2.4.22/2.6.8
2.6.18 (2.6.17.x has a security vulnerability) . . . 2.6.10 SMP
3.3.5 4.0 / 4.1 . . . 3.4.2
2.3.2 . . . . 2-2-2.10.0
Compilation ? oui
oui . . . .
Compilation libethernaude (étape du make) ? Cela plante en compilation avec le fichier camera.c dans libethernaude.

Il faut remplacer :

#if defined OS_WIN

HWND hwnd;

int r;

char exe_file[1000];

char cmdline[1000];

#endif

par

#if defined OS_WIN

HWND hwnd;

int r;

char exe_file[1000];

#endif

char cmdline[1000];

c'est a la ligne 118.

Solution : libethernaude_src.zip (à décompresser dans le repertoire src/libcam/libethernaude/src)

Archive de fichiers .h et .c donnée par Denis Marchais le 27/07/06.

Cela plante en compilation avec le fichier camera.c dans libethernaude.

Il faut remplacer :

#if defined OS_WIN

HWND hwnd;

int r;

char exe_file[1000];

char cmdline[1000];

#endif

par

#if defined OS_WIN

HWND hwnd;

int r;

char exe_file[1000];

#endif

char cmdline[1000];

c'est a la ligne 118.

Ca l'a fait aussi pour libaudinet.

. . . .
Libethernaude fonctionnelle ? Segfault :
libethernaude(1.0): enter cmdCam(argc=3,argv[0]=cam1,argv[1]=window,argv[2]=1 11536 1024)

libethernaude(1.0): enter cmdCam(argc=3,argv[0]=cam1,argv[1]=exptime,argv[2]=5)

libethernaude(1.0): enter cmdCam(argc=2,argv[0]=cam1,argv[1]=product)

libethernaude(1.0): enter cmdCam(argc=3,argv[0]=cam1,argv[1]=bin,argv[2]=4 4)

libethernaude(1.0): enter cmdCam(argc=2,argv[0]=cam1,argv[1]=acq)

./audela.sh: line 8: 14170 Erreur de segmentation ./audela

  • "OK" dans le panneau config Ethernaude : "Error, can't read "widget(conf_audinet,focuser_bit)":no such element in array".
. . . . .
Libfli ? Compilation des externals échoue avec l'erreur: In file included from unix/linux/libfli-usb-sys.c:47:

Solution :
La libfli est bien récalcitrante ; je vais la virer de la compile par défaut en attendant de lui trouver un sort décent. Elle sera toujours compilable séparément en lancant un make dans son répertoire.

System.h ? RAS gcc -fPIC -c -Wall -O2 -DUSE_TCL_STUBS -DUSE_TK_STUBS

- -DUSE_COMPOSITELESS_PHOTO_PUT_BLOCK -DUSE_COMPAT_CONST -I /home/jb/Documents/audela/audela-1.4.0-beta1/src include -I/usr/include/tcl8.4.13 -I/usr/X11R6/include -I ../src -o util.o /home /jb/Documents/audela/audela-1.4.0-beta1/src/libcam/util.c

In file included from /home/jb/Documents/audela/audela-1.4.0-beta1/src/include/s ystem.h:32,

. . . .
Error.c (Suze et Ubuntu 6.10) ? Le make echoue toujours avec l'erreur précitée, et si je mets en commentaire la ligne 89 de cerror.h, j'ai un echec avec: ../src/buf_tcl.cpp: In function _int cmdGetKwd(void*, Tcl_Interp*, int, char**)_:./src/buf_tcl.cpp:340: error: _message_ is not a member of _CError_

Solution : cerror.zip
Il ne faut pas mettre toute la ligne encommentaire, mais simplement supprimer le "CError::" : Dans audela/src/audela/libaudela/src/cerror.h :

static char * CError::message(int error);

devient:

static char * message(int error);

Binaire fonctionnel
  • Chargement d'une image jpeg plante:
    missing library Img 1.3 for loading ... can't find package Img 1.3
    Solution :
    Installer le paquet demandé ! libtk-img - Extended image format support for Tcl/Tk.
    apt-get install libtk-img
  • Segfault lors de l'enregistrement au format jpeg.
  • Freeze lors de la lecteure d'une image au format png.
  • Chargement d'une image jpeg plante:
    missing library Img 1.3 for loading ... can't find package Img 1.3
    Solution :
    Installer le paquet demandé ! libtk-img - Extended image format support for Tcl/Tk.
    apt-get install libtk-img

. . . .

Remarques :