Gestion d'un plantage sous Linux / Windows

Bugs

Modérateur : xcasadmin

laurent.c
Messages : 5
Inscription : sam. mars 09, 2013 9:27 pm

Gestion d'un plantage sous Linux / Windows

Message par laurent.c » dim. mars 10, 2013 9:49 am

Bonjour.

Travaillant sous plusieurs plates-formes, j'ai eu l'occasion de constater un comportement différent de XCAS sous Linux et sous Windows.

Linux : XCAS version 1.0.0, sous Mint 64 bits (architecture Debian / Ubuntu).
Windows : XCAS dernière version stable, XP pro.

La fonction testée permet le calcul récursif des termes d'une suite récurrente, sans test de sécurité :

Code : Tout sélectionner

u(n):={
  si n==0 alors 4
    sinon 2/3*u(n-1)-3;
  fsi;
}:;
Et voici enfin les comportements des deux systèmes avec, par exemple, l'appel de u(-1) ou de u(0.5) :
- sous Windows, XCAS envoie un message d'erreur disant (de mémoire) que le nombre d'itérations devient trop grand.
- sous Linux, pas de message d'erreur, mais un plantage : XCAS se ferme brutalement.

J'espère que cette remarque vous sera utile ; un grand merci en tout cas pour ce logiciel !

alb
Messages : 1229
Inscription : ven. août 28, 2009 3:34 pm

Re: Gestion d'un plantage sous Linux / Windows

Message par alb » dim. mars 10, 2013 10:31 am

Le pb est corrigé en tout cas sous linux avec la version en test 1.1 on obtient: Trop de niveaux de récursions Erreur: Valeur Argument Incorrecte

laurent.c
Messages : 5
Inscription : sam. mars 09, 2013 9:27 pm

Re: Gestion d'un plantage sous Linux / Windows

Message par laurent.c » dim. mars 10, 2013 10:38 am

Alors c'est parfait !
Merci !

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

Re: Gestion d'un plantage sous Linux / Windows

Message par parisse » dim. mars 10, 2013 1:11 pm

Pas sur que le problème soit réellement corrigé sur tous les linux. En fait le comportement est différent sous linux et windows, sous windows, la variable max recursion level (par défaut 50, modifiable dans la config de xcas) est comparée au nombre d'exécutions imbriquées et donc une erreur sera très vite déclenchée. Sous linux, c'est la taille de la pile système qui est testée, et peut-être que ca ne marche que sous 32 bits. J'essaierai sous 64 bits, si ça plante cela nécessitera sans doute une correction par transtypage unsigned long -> unsigned longlong là où le code teste thread_param_ptr(contextptr)->stackaddr.

Répondre