intersectionpoints : erreur de segmentation

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

intersectionpoints : erreur de segmentation

Message non lu par maurice » mar. 5 nov. 2013, 22:36

Bonsoir,

je souhaitais faire un dessin tout simple sur la médiatrice et sa construction au compas. Pour tracer cette dernière je pensais utiliser intersectionpoints mais voila :

Figure asymptote 7a8f000ba44224a99b7210d79d058f07
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. size(5cm);
  3.  
  4. pair pA=(0,0), pB=(2,0);
  5. draw(pA--pB);
  6. path c1=arc(pA, 1.5, -100, 100);
  7. path c2=arc(pB, 1.5, 80, 280);
  8. draw(c1, gray);
  9. draw(c2, gray);
  10.  
  11. // point[] pt=intersectionpoints(c1, c2);
  12. // draw(line(pt[0], pt[1]), dashed);
  13. dot("$A$", pA, W);
  14. dot("$B$", pB, E);


Si je decommente les lignes

Code : Tout sélectionner

// point[] pt=intersectionpoints(c1, c2);
// draw(line(pt[0], pt[1]), dashed);


j'ai une erreur de segmentation.

Code : Tout sélectionner

$ asy geometrie-mediatrice.asy
Erreur de segmentation (core dumped)


Y'a-t-il un erreur dans le code ?
Sinon, y a-t-il le même problème chez vous ?

Merci

Bruno

PS : bien sur, dans mon cas, c'est très simple de se passer de intersectionpoints...
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: intersectionpoints : erreur de segmentation

Message non lu par GM » mer. 6 nov. 2013, 11:22

Bonjour,
je suis occupé de réinstaller mon poste de travail principal après l'achat de ceci... et je n'en suis pas encore arrivé à l'étape de réinstallation d'Asymptote et des plugins qui vont bien avec Notepad++ pour l'utiliser. Donc si personne ne répond avant, je ferai le test plus tard dans la journée.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
chellier
Messages : 104
Enregistré le : jeu. 18 mars 2010, 17:30

Re: intersectionpoints : erreur de segmentation

Message non lu par chellier » mer. 6 nov. 2013, 12:34

Bonjour Bruno,

Chez moi (ubuntu, 2.24svn-r5568), je n'ai pas d'erreur de segmentation, mais ça ne compile pas non plus, j'ai arreté la compilation au bout de plusieurs minutes...

j'ai essayé avec la fonction Arc de graph : même problème.

Par contre en utilisant les types de geometry.asy, ça compile.

Figure asymptote 82285091b6f037b87109c3bdcf965fc1
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. size(5cm);
  3.  
  4. point pA=(0,0), pB=(2,0);
  5. draw(pA--pB);
  6.  
  7. circle c1=circle(pA, 1.5);
  8. circle c2=circle(pB, 1.5);
  9.  
  10. arc ac1=arc(c1, -100, 100);
  11. arc ac2=arc(c2, 80, 280);
  12.  
  13. draw(ac1, gray);
  14. draw(ac2, gray);
  15.  
  16. point[] pt=intersectionpoints(c1, c2);
  17. draw(line(pt[0], pt[1]), dashed);
  18. dot("$A$", pA, W);
  19. dot("$B$", pB, E);


Ou encore en utilisant pair[] au lieu de point[]

Figure asymptote d8420bcb0996f62770fb8514cdae30a7
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. size(5cm);
  3.  
  4. pair pA=(0,0), pB=(2,0);
  5. draw(pA--pB);
  6. path c1=arc(pA, 1.5, -100, 100);
  7. path c2=arc(pB, 1.5, 80, 280);
  8. draw(c1, gray);
  9. draw(c2, gray);
  10.  
  11. pair[] pt=intersectionpoints(c1, c2);
  12. draw(interp(pt[0],pt[1],-.2)--interp(pt[0],pt[1],1.2), dashed);
  13. dot("$A$", pA, W);
  14. dot("$B$", pB, E);


Il faut apparemment faire attention à ne pas trop mélanger les différents types...
Je n'ai pas d'explications plus précises, désolé !

Christophe

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: intersectionpoints : erreur de segmentation

Message non lu par GM » mer. 6 nov. 2013, 14:11

J'ai comme l'impression qu'il y a une erreur dans geometry.asy :

Dans la définition suivante du transtypage d'un pair[] en un point[]

Code : Tout sélectionner

point[] operator cast(pair[] p)
{/*<asyxml></code><documentation>Cast pair[] to point[] relatively to the current coordinate
   system 'currentcoordsys'.</documentation></operator></asyxml>*/
  pair[] op;
  for (int i = 0; i < p.length; ++i) {
    op.push((point)p[i]);
  }
  return op;
}


je verrai bien le changement de

Code : Tout sélectionner

  pair[] op;
en

Code : Tout sélectionner

  point[] op;
.

Mais c'est bizarre qu'il y aurait une telle erreur depuis si longtemps... sans qu'il n'y ait eu d'autres problèmes rencontrés avant.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: intersectionpoints : erreur de segmentation

Message non lu par GM » mer. 6 nov. 2013, 15:02

GM a écrit :Mais c'est bizarre qu'il y aurait une telle erreur depuis si longtemps... sans qu'il n'y ait eu d'autres problèmes rencontrés avant.


Philippe est aussi étonné que moi :

En réponse à un mail, Philippe a écrit :Salut Gaétan,

Merci pour la remontée ; ça me paraît incroyable comme bug depuis le temps…

Il y a peut-être eu un changement au niveau de la façon de caster puisque la fonction est définie comme retournant un point[] alors que le return fait un retour de pair[]…
Je suis persuadé que ça marchait avant, pas possible autrement.

Je regarde dès que possible, pas avant ce wk, suis au boulot là…
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

maurice
Messages : 262
Enregistré le : jeu. 25 mars 2010, 13:00
Contact :

Re: intersectionpoints : erreur de segmentation

Message non lu par maurice » mer. 6 nov. 2013, 20:40

Bonsoir, merci pour vos réponses.
On attend donc le week-end !
Bruno
Doc 3D
Si ça ne marche pas, essayez la version pdf

Fedora 23 -- Asymptote 2.35 -- TeXlive 2013 -- emacs et/ou gedit

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: intersectionpoints : erreur de segmentation

Message non lu par OG » jeu. 19 déc. 2013, 21:36

Bonsoir

J'ai testé une ancienne version d'Asymptote (vers la 2.00 ou un svn de 2010)
et le même problème subsiste.
Je n'ai pas eu le courage de tester la compilation de la doc et des exemples
qui vont avec.
Vu l'extrait de code de Gaëtan (et sa suggestion), je ne suis pas sûr que
le bug soit nouveau. Peut-être est-il passé au travers des mailles ?

O.G.

YoungFrog
Messages : 14
Enregistré le : mar. 11 sept. 2012, 15:46

Re: intersectionpoints : erreur de segmentation

Message non lu par YoungFrog » ven. 20 déc. 2013, 12:37

L'erreur de segmentation est une erreur de "stack overflow" je suppose, au vu de la doc :
As in C++, infinite nested recursion will generate a stack overflow (reported as a segmentation fault, unless a fully working version of the GNU library libsigsegv (e.g. 2.4 or later) is installed at configuration time).


En tout cas, j'ai testé avec la version de "asy" qui se trouve dans texlive 2010 jusque texlive 2013, et j'ai une segfault à chaque fois :

Code : Tout sélectionner

$ ASYMPTOTE_DIR=/usr/local/texlive/2010/texmf/asymptote /usr/local/texlive/2010/bin/i386-linux/asy ~/tmp/test.asy
/usr/local/texlive/2010/texmf/asymptote/geometry.asy: 245.1: runtime: Stack overflow or segmentation fault: rerun with -nothreads
Abandon (core dumped)
$ ASYMPTOTE_DIR=/usr/local/texlive/2010/texmf/asymptote /usr/local/texlive/2010/bin/i386-linux/asy -nothreads ~/tmp/test.asy
/usr/local/texlive/2010/texmf/asymptote/geometry.asy: 245.1: runtime: Stack overflow
Abandon (core dumped)
$ ASYMPTOTE_DIR=/usr/local/texlive/2011/texmf/asymptote /usr/local/texlive/2011/bin/i386-linux/asy ~/tmp/test.asy
Erreur de segmentation (core dumped)
$ ASYMPTOTE_DIR=/usr/local/texlive/2012/texmf/asymptote /usr/local/texlive/2012/bin/i386-linux/asy ~/tmp/test.asy
Erreur de segmentation (core dumped)
$ ASYMPTOTE_DIR=/usr/local/texlive/2013/texmf-dist/asymptote /usr/local/texlive/2013/bin/i386-linux/asy ~/tmp/test.asy
Erreur de segmentation (core dumped)


Et bien sûr (c'est facile de dire "bien sûr", quand le boulot est fait :)) la solution de GM résout cela (enfin, j'ai juste testé sur la version svn, pas sur les ancienens). Bizarre que ça n'ait pas été corrigé dans le dépôt svn, d'ailleurs, non ? Ou alors je ne suis pas à jour ?
Gentoo GNU/Linux -- Asymptote 2.24svn avec Emacs -- TeXlive 2012

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: intersectionpoints : erreur de segmentation

Message non lu par OG » sam. 21 déc. 2013, 15:35

Bonjour

Bravo pour les tests. Comme de plus en utilisant les types de geometry.asy
tout fonctionne correctement, cela confirmerait un bug.
Si tout fonctionne bien (la doc par exemple et les figures de celles et
ceux qui utilisent geometry) avec le changement que verrait bien Gaëtan
et en fonction du temps de tous, on peut toujours proposer cette modification
de geometry.asy dans le svn d'asymptote, via Philippe (s'il a le temps,
sinon par mail à John, paraîtrait-même que j'ai les autorisations).

@Gaëtan : alors ton SSD ça donne quoi ?

Joyeuses fêtes de fin d'année
O.G.

Répondre