SIGBUS

Xcas devel: interface utilisateur/user interface

Modérateur : xcasadmin

JKB
Messages : 20
Inscription : mar. juin 28, 2011 7:57 am
Localisation : Paris, France
Contact :

SIGBUS

Message par JKB » mar. juin 28, 2011 10:27 am

Bonjour à tous,

C'est la première fois que je poste ici. Je développe depuis de longues années un outil qui est disponible ici http://www.rpl2.fr et certains utilisateurs m'ont demandé d'ajouter un sous-système CAS. Je me suis penché sur giac et cela fonctionne. Enfin, cela fonctionne lorsque c'est compilé sur une architecture qui ne demande pas d'alignement mémoire. Sur sparc, ça se bauge lamentablement avec un SIGBUS à la ligne 1045 de src/gen.cc lors de l'initialisation de la bibliothèque (version 0.9.1 stable).

Effectivement, on essaie de comparer un char qui n'a aucune raison d'être aligné sur le second argument qui est un enum (donc un entier 32 bits sur l'architecture qui m'intéresse et qui lui est aligné). J'ai donc corrigé le type déclaré dans la classe gen par un enum. Rien n'y fait, l'erreur est toujours la même.

L'opérateur > ou != ne me semble pas surchargé. J'avoue ne pas savoir où chercher.

Cordialement,

JKB

parisse
Messages : 5084
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: SIGBUS

Message par parisse » mar. juin 28, 2011 11:48 am

bonjour,

Il y a pas mal d'optimisations qui sont faites sur le type gen et j'ai aussi rajoute recemment des flags de compilation pour eviter tout un tas d'initialisations.
Pouvez-vous essayer avec la version 0.9.2, et les flags de compilation suivants:
-fno-strict-aliasing -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_PHYSICAL_CONSTANTS
si necessaire ajoutez aussi -DDOUBLEVAL
Ceci dit, je n'ai aucune idee de ce que ca peut ou pas arranger, faut dire que je n'ai pas d'acces a du sparc, uniquement du linux (i86 32 64 bits et ARM 32 bits) et du windows (XP 32 bits).

JKB
Messages : 20
Inscription : mar. juin 28, 2011 7:57 am
Localisation : Paris, France
Contact :

Re: SIGBUS

Message par JKB » mar. juin 28, 2011 12:37 pm

Je viens d'essayer avec la version 0.9.2 et les options de compilation que vous m'avez indiquées.

Avec les deux premières options, j'obtiens un SIGBUS. Si je rajoute la troisième, c'est un SIGSEGV qui arrive...

Si vous le désirez, je peux vous donner un compte sur une machine sparc64/linux avec tous les outils de développement.

Répondre