1.2.2-81 compil et jordan

Bugs

Modérateur : xcasadmin

Répondre
frederic han
Messages : 1113
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

1.2.2-81 compil et jordan

Message par frederic han » mer. sept. 14, 2016 3:57 pm

Salut,
je n'arrive pas a reproduire cela avec ton binaire linux amd64 1.2.2-81, mais lorsque je compile
le source de la 1.2.2-81 (dans les 2 cas j'ai fait avec --disable-gui)

J'ai le crash suivant (pas toujours au premier essai de jordan(A) parfois je dois en faire 5 ou 6):

Code : Tout sélectionner

1>> jordan(A)
[New Thread 0x7fffedbc9700 (LWP 15329)]

Program received signal SIGSEGV, Segmentation fault.
giac::mutexptr (contextptr=contextptr@entry=0x7fffedbc6320) at global.cc:1046
1046	      return contextptr->globalptr->_mutexptr;
(gdb) bt
#0  giac::mutexptr (contextptr=contextptr@entry=0x7fffedbc6320)
    at global.cc:1046
#1  0x00007ffff75219ce in giac::is_context_busy (contextptr=0x7fffedbc6320)
    at global.cc:1051
#2  0x00007ffff75296ec in giac::check_thread (contextptr=0x7fffedbc6320)
    at global.cc:3445
#3  0x000000000040ea1e in xcas::icas_eval (g=..., gg=..., 
    reading_file=@0x7fffffffe020: 0, filename="", 
    contextptr=contextptr@entry=0x7fffffffe0f0) at Xcas1.cc:3208
#4  0x0000000000406936 in main (ARGC=<optimized out>, ARGV=<optimized out>)
    at icas.cc:923
ou bien

Code : Tout sélectionner

---------------------------------------------
ou bien avec threads:=1


Program received signal SIGSEGV, Segmentation fault.
giac::mutexptr (contextptr=contextptr@entry=0x7fffb16d8c10) at global.cc:1076
1076	      return contextptr->globalptr->_mutexptr;
(gdb) bt
#0  giac::mutexptr (contextptr=contextptr@entry=0x7fffb16d8c10) at global.cc:1076
#1  0x00007ffff74f12de in giac::is_context_busy (contextptr=0x7fffb16d8c10) at global.cc:1081
#2  0x00007ffff74f9139 in giac::check_thread (contextptr=0x7fffb16d8c10) at global.cc:3479
#3  0x00000000004121d6 in xcas::icas_eval (g=..., gg=..., reading_file=@0x7fffffffd7f0: 0, filename="", contextptr=contextptr@entry=0x7fffffffd8b0) at Xcas1.cc:3280
#4  0x000000000040a23b in main (ARGC=<optimized out>, ARGV=<optimized out>) at icas.cc:1445


--------------------------------------
ou bien compile sur une autre machine avec --disable-gui

1>> jordan(A)
[New Thread 0x7fffedbc9700 (LWP 15329)]

Program received signal SIGSEGV, Segmentation fault.
giac::mutexptr (contextptr=contextptr@entry=0x7fffedbc6320) at global.cc:1046
1046	      return contextptr->globalptr->_mutexptr;
(gdb) bt
#0  giac::mutexptr (contextptr=contextptr@entry=0x7fffedbc6320)
    at global.cc:1046
#1  0x00007ffff75219ce in giac::is_context_busy (contextptr=0x7fffedbc6320)
    at global.cc:1051
#2  0x00007ffff75296ec in giac::check_thread (contextptr=0x7fffedbc6320)
    at global.cc:3445
#3  0x000000000040ea1e in xcas::icas_eval (g=..., gg=..., 
    reading_file=@0x7fffffffe020: 0, filename="", 
    contextptr=contextptr@entry=0x7fffffffe0f0) at Xcas1.cc:3208
#4  0x0000000000406936 in main (ARGC=<optimized out>, ARGV=<optimized out>)
    at icas.cc:923

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

Re: 1.2.2-81 compil et jordan

Message par parisse » mer. sept. 14, 2016 6:23 pm

avec une matrice dans A ou juste jordan sur un A formel?

frederic han
Messages : 1113
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.2.2-81 compil et jordan

Message par frederic han » mer. sept. 14, 2016 8:15 pm

oops, j'ai oublie de coller le debut.

C'est avec:

Code : Tout sélectionner

A:=companion((x^3-2)^2)
comme dans la test-suite de giac.

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

Re: 1.2.2-81 compil et jordan

Message par parisse » jeu. sept. 15, 2016 5:54 am

J'ai effectivement un probleme avec le source 1.2.2-85 parce que j'y ai rajoute une fonction release_globals() et j'ai mis des delete de pointeurs dans le mauvais ordre, mais c'est bizarre que le probleme existe avec la 1.2.2-81.

frederic han
Messages : 1113
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.2.2-81 compil et jordan

Message par frederic han » jeu. sept. 15, 2016 7:58 am

j'ai aussi le probleme avec une 1.2.2-69 compilee avec --disable-gui.

Code : Tout sélectionner

giac::mutexptr (contextptr=contextptr@entry=0x7fffb16f3c10) at global.cc:1061
1061	global.cc: Aucun fichier ou dossier de ce type.
(gdb) bt
#0  giac::mutexptr (contextptr=contextptr@entry=0x7fffb16f3c10) at global.cc:1061
#1  0x00007ffff74f528e in giac::is_context_busy (contextptr=0x7fffb16f3c10) at global.cc:1066
#2  0x00007ffff74fd099 in giac::check_thread (contextptr=0x7fffb16f3c10) at global.cc:3463
#3  0x00000000004121d6 in xcas::icas_eval (g=..., gg=..., reading_file=@0x7fffffffd580: 0, filename="", 
    contextptr=contextptr@entry=0x7fffffffd640) at Xcas1.cc:3280
#4  0x000000000040a23b in main (ARGC=<optimized out>, ARGV=<optimized out>) at icas.cc:1445

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

Re: 1.2.2-81 compil et jordan

Message par parisse » jeu. sept. 15, 2016 8:39 am

Apres correction de release_globals(), j'ai teste 10 fois jordan sans erreur, puis j'ai teste avec valgrind qui ne detecte rien, du coup je ne vois pas ce que je peux faire...

frederic han
Messages : 1113
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.2.2-81 compil et jordan

Message par frederic han » ven. sept. 16, 2016 12:59 pm

J'ai aussi le PB avec la testing 1.2.2.85.

plus precisement, sur differentes machines linux amd64, j'ai essaye, gcc-4.9.2, gcc-4.8.4, gcc-6.1.1 et

./icas crash avant la fin sur:

Code : Tout sélectionner

A:=companion((x^3-2)^2);
jordan(A);
for(j:=0;j<20;j++){jordan(A);print(j)}:;
En revanche sur la machine ou il y a gcc-4.8.4 (ubuntu 14.04 amd64), si j'utilise gcc-4.4 alors ./icas arrive a faire ce calcul. A part ton binaire, c'est la premiere version que je compile qui passe ces 20 tests.

Et toi, tu as aussi un gcc ancien?

frederic han
Messages : 1113
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.2.2-81 compil et jordan

Message par frederic han » ven. sept. 16, 2016 1:57 pm

Bon pour finir je fini par avoir le probleme aussi avec la version en gcc-4.4 mais je ne l'ai toujours pas eu avec ton binaire.

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

Re: 1.2.2-81 compil et jordan

Message par parisse » ven. sept. 16, 2016 2:02 pm

Sur ma machine de dev, c'est gcc 4.4.7 de la distrib debian stable precedente. La machine de compilation est en xubuntu, probablement 14.04 et doit utiliser un gcc de la meme epoque.

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

Re: 1.2.2-81 compil et jordan

Message par parisse » ven. sept. 16, 2016 3:15 pm

Le coupable est peut-etre une race condition entre destruction de contexte et test des contextes actifs par l'application principale.
Dans le cas qui nous occupe, c'est un contexte cree ligne 2188 de vecteur.cc qui pose probleme (dixit valgrind apres une dizaine d'iterations environ), il suffirait d'ajouter juste apres:

Code : Tout sélectionner

#ifdef HAVE_LIBPTHREAD
    pthread_mutex_lock(&context_list_mutex);
#endif
    context_list().pop_back();
#ifdef HAVE_LIBPTHREAD
    pthread_mutex_unlock(&context_list_mutex);
#endif

frederic han
Messages : 1113
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: 1.2.2-81 compil et jordan

Message par frederic han » ven. sept. 16, 2016 5:11 pm

Bien vu, les premiers essais sont concluants.
Ouf!

Répondre