Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add SIGINT handling in Solver on POSIX systems #438

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Open

Conversation

amarendet
Copy link
Member

Proposition pour capturer les SIGINT sur les systèmes POSIX, via la fonction sigaction� du header <signal.h> de la norme POSIX.
Des fonctions additionnelles sont définies dans un nouveau header ibex_signals.h.
Les gestion des signaux doit être activée manuellement.

@amarendet amarendet requested a review from gchabert February 6, 2020 09:02
@amarendet
Copy link
Member Author

En réponse à #421

@gchabert
Copy link
Contributor

gchabert commented Feb 7, 2020

Salut Antoine,
Merci pour la PR. J'ai commencé à tester. J'observe plusieurs problèmes.
Le premier est que les COV ne sont pas correctement sauvegardés: je soupçonne fortement que les 'pending' boxes aient été oubliées!
Par exemple, si je résouds le problème suivant qui a 128 solutions:
./ibexsolve ../benchs/solver/polynom/ponts-geo.bch
sans ^C, j'obtiens bien 128 solutions.
Si je le lance et que je l'interromps dès le début, j'obtiens par exemple 9 solutions (c'est normal):

 user abort

 number of solution boxes:	9
 number of boundary boxes:	--
 number of unknown boxes:	--
 number of pending boxes:	--
 cpu time used:			0.292068s
 number of cells:		41

mais on voit qu'il manque les pending boxes, et si je poursuis la recherche, elle s'arrête immédiatement (et perd des solutions):

solving successful!

 number of solution boxes:	9
 number of boundary boxes:	--
 number of unknown boxes:	--
 number of pending boxes:	--
 cpu time used:			4.00001e-06s [total=0.292072]
 number of cells:		0 [total=41]

Le second problème est que le signal n'a pas l'air d'être capturé de façon asynchrone et que le temps de réaction semble dépendre du nombre de cellules... Prenons par exemple le problème synthesis. Si je lance
./ibexsolve ../benchs/solver/others/synthesis.bch
et que j'interromps la recherche au bout de 5s, le programme met quelques secondes à s'arrêter (ça me paraît déjà un peu lent, mais c'est ok).
Par contre, si je laisse ibexsolve tourner 30s et que je l'interromps, il met quaiment 30s à s'arrêter.

@amarendet
Copy link
Member Author

Salut Gilles,

Oui, désolé, la pull request était un peu prématurée, je me suis emballé et je me suis arrêté uniquement aux signaux et j'ai oublié le solveur...
Je vais retravailler ça.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants