Page 1 sur 1
intersectionpoints : erreur de segmentation
Posté : mar. 5 nov. 2013, 22:36
par maurice
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 :
*** 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
import geometry;
size(5cm);
pair pA=(0,0), pB=(2,0);
draw(pA--pB);
path c1=arc(pA, 1.5, -100, 100);
path c2=arc(pB, 1.5, 80, 280);
draw(c1, gray);
draw(c2, gray);
// point[] pt=intersectionpoints(c1, c2);
// draw(line(pt[0], pt[1]), dashed);
dot("$A$", pA, W);
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...
Re: intersectionpoints : erreur de segmentation
Posté : mer. 6 nov. 2013, 11:22
par GM
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.
Re: intersectionpoints : erreur de segmentation
Posté : mer. 6 nov. 2013, 12:34
par chellier
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.
*** 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
import geometry;
size(5cm);
point pA=(0,0), pB=(2,0);
draw(pA--pB);
circle c1=circle(pA, 1.5);
circle c2=circle(pB, 1.5);
arc ac1=arc(c1, -100, 100);
arc ac2=arc(c2, 80, 280);
draw(ac1, gray);
draw(ac2, gray);
point[] pt=intersectionpoints(c1, c2);
draw(line(pt[0], pt[1]), dashed);
dot("$A$", pA, W);
dot("$B$", pB, E);
Ou encore en utilisant pair[] au lieu de point[]
*** 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
import geometry;
size(5cm);
pair pA=(0,0), pB=(2,0);
draw(pA--pB);
path c1=arc(pA, 1.5, -100, 100);
path c2=arc(pB, 1.5, 80, 280);
draw(c1, gray);
draw(c2, gray);
pair[] pt=intersectionpoints(c1, c2);
draw(interp(pt[0],pt[1],-.2)--interp(pt[0],pt[1],1.2), dashed);
dot("$A$", pA, W);
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
Re: intersectionpoints : erreur de segmentation
Posté : mer. 6 nov. 2013, 14:11
par GM
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
en
.
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.
Re: intersectionpoints : erreur de segmentation
Posté : mer. 6 nov. 2013, 15:02
par GM
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à…
Re: intersectionpoints : erreur de segmentation
Posté : mer. 6 nov. 2013, 20:40
par maurice
Bonsoir, merci pour vos réponses.
On attend donc le week-end !
Bruno
Re: intersectionpoints : erreur de segmentation
Posté : jeu. 19 déc. 2013, 21:36
par OG
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.
Re: intersectionpoints : erreur de segmentation
Posté : ven. 20 déc. 2013, 12:37
par YoungFrog
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 ?
Re: intersectionpoints : erreur de segmentation
Posté : sam. 21 déc. 2013, 15:35
par OG
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.