Aller au contenu

depassement de pile


l56

Messages recommandés

j'ai un dépassement de pile avec :vlr-objectmodified

 

avec autocad 2004 / 2006 sur XP : pas de problème

avec 2008 2009 sur VISTA: Dépassement de pile et autocad se ferme.

 

Y'a-t-il un moyen de connaître la puissance de la pile. (et de pouvoir l'augmenter)

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne vois pas bien en quoi vlr-acdb-reactor peut provoquer un dépassement de la pile.

 

À ma connaissance on parle de dépassement de la pile avec les fonctions récursives quand le nombre d'appels récursifs dépasse la limite de la pile (19975 appels selon mes tests).

 

On parle aussi de dépassement de la pile pour les créations de fichiers de forme (SHX), voir l'aide > Guide de personnalisation > Formes et polices de formes > Création de fichiers de définition de forme > Codes spéciaux > Codes 5 et 6 : enregistrement/restauration de l'emplacement.

 

EDIT :

Je pencherais plutôt pour la deuxième solution (même si je ne suis pas familier avec la création de fichiers de forme), le message retourné pour une fonction récursive est le suivant :

Une erreur matérielle s'est produite ***

limite de la pile interne atteinte (simulation)

 

[Edité le 31/5/2008 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

pour une fonction récursive est le suivant :

Une erreur matérielle s'est produite ***

limite de la pile interne atteinte (simulation)

 

Ben moi je l'ai eu tout récemment pour une forme itérative, avec (foreach) pour être exact.

 

D'ailleurs mon cas m'a assez dérouté.

 

La première fois une erreur fatale "unwid quelque chose" de mémoire...

La deuxième un dépassement de pile.

et la troisième une erreur d'obtention de licence (hein, quoi, qu'est qui ce passe)?!?!

 

Tout ça en rebootant la machine à chaque fois, et en faisant exactement la même opération.

Et à chaque fois le recover inexploitable (quelque octets seulement) merci Autodesk!

Ceci sous une 2008.

 

Au final, j'abandonne la compréhension des erreurs, et je configure mes sauvegardes automatiques de manière rapprochée. Je perds moins de boulot et ai plus de succès avec les SV$ que les fichiers de récupération d'Autocad.

 

NB: Mon fichier fait quant 129Mo (3D filaire, essentiellement des 3Dpoly avec des Xdata et des blocs avec attributs) pas de quoi fouetter un chat. Mais celle qui m'a posé problème et la 3Dpoly la plus longue avec vraiment beaucoup de sommets (130km)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

 (vl-load-com)
(vlr-acdb-reactor   nil '((:vlr-objectmodified   . mafonction-objet-modified)))
(defun mafonction-objet-modified
(a b)
(princ "\n")(princ (cdr (assoc 0 (entget (cadr b)))))
)

Chargez les lignes ci-dessus et passer d'un onglet presentation à l'onglet objet

(Faites cela dans un dessin vierge ou sauvegardez avant)

 

Dans autocad 2004 et 2006 : pas de pb

dans 2008 et 2009 -> (Dépassement de pile) et autocad se ferme !)

 

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

C'est une sorte de mémoire vive.. c'est ça.??

 

Tout à fait.

C'est ce qui correspond au paramètre "stack" lorsque que tu fait (mem) en ligne de commande.

 

Cela fait bien longtemps que je n'ai plus touché à ces paramètres.

 

On peut modifier le comportement de la pile, notamment pour les fonctions récursives comme l'a fait remarquer (gile).

 

Il y a la fonction (gc): garbage collector qui en gros récupère des segments mémoires inutilisé.

(peut être utile aussi, de mémoire, lorsqu'on atteint le maximum de de jeux de sélections permis, pour pouvoir recommencer d'autre jeux de sélection)

 

(alloc) et (expand) pour allouer des segments plus large, tu peux ainsi augmenter la profondeur de pile pour des fonctions récursives.

 

Si tu utilise les xdata, il y a aussi les fonctions (xdsize) et (xdroom) pour augmenter la mémoire occupée par les xdata.

 

Ne pas jouer avec ces fonctions en aveugle, sous peine d'avoir de forte dégradations de performance si cela est mal géré. Généralement les paramètres par défaut sont très bien.

 

L'époque où je m'en suis servir, et lorsque que le lisp a pu se lancer en mémoire étendue à l'aide d'un utilitaire ext-lisp sous dos en proc 386. Ca ne me rajeuni pas.... :P

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

l56 :

De mémoire, il me semble avoir eu aussi ce problème de dépassement de pile dans un réacteur.

C'était l'entget qui posait problème. En utilisant un vlax-ename->vla-object à la place, cela a été réglé.

Il y a parfois une logique qui me dépasse.

 

bonuscad :

sous dos en proc 386. Ca ne me rajeuni pas....

Ben non. Cela me rappelle la gestion sous dos lors du boot des différentes config. afin d'optimiser au mieux les mémoires et de tenir dans les fameux premiers 640ko, la gestion des irq car le plug&play n'existait pas encore avec le pc complètement ouvert pour faire joujou avec les switchs et les nuits blanches qui en découlent.

Maintenant, cela devient d'un compliqué...

 

@+

 

[Edité le 2/6/2008 par Patrick_35]

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

C'était l'entget qui posait problème.

 

Je pense que tu a raison Patrick_35, car j'ai essayé le code incriminé par l56 et en gardant juste:

 

(princ (cadr b))

au lieu de

(princ (cdr (assoc 0 (entget (cadr b)))))

 

le code ne posait plus de problème...

 

Autrement c'est vrai que la fermeture, pour moi et sous 2008, était instantanée, même pas moyen de lire un quelconque message d'erreur :(

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité