~ chicken-core (chicken-5) 6c3a82c35350763efdb4a9bf2a49614b5d9be23a
commit 6c3a82c35350763efdb4a9bf2a49614b5d9be23a Author: Sebastien Marie <semarie@online.fr> AuthorDate: Wed Mar 4 15:10:55 2020 +0000 Commit: megane <meganeka@gmail.com> CommitDate: Sat Mar 7 17:58:59 2020 +0200 Fix scheduler in user-interrupt management When processing interruption code, the thread-state-buffer should be updated to reflect any global changes (like parameters), else changes could be lost. Fix: #1638 Signed-off-by: Mario Domenech Goulart <mario@parenteses.org> Signed-off-by: megane <meganeka@gmail.com> diff --git a/NEWS b/NEWS index 6c30dece..d86ffe23 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,10 @@ +5.2.1 +- Runtime system + - Sleeping primordial thread doesn't forget mutations made to + parameters in interrupt handlers anymore. (See #1638. Fix + contributed by Sebastien Marie) + + 5.1.1 - Core libraries diff --git a/manual/Acknowledgements b/manual/Acknowledgements index 514c59a1..97cf81eb 100644 --- a/manual/Acknowledgements +++ b/manual/Acknowledgements @@ -27,7 +27,7 @@ Markus Hülsmann, Götz Isenmann, Paulo Jabardo, Wietse Jacobs, David Janssens, Christian Jäger, Robert Jensen, Matt Jones, Dale Jordan, Valentin Kamyshenko, Daishi Kato, Peter Keller, Christian Kellermann, Brad Kind, Ron Kneusel, "Kooda", Matthias Köppe, Krysztof Kowalczyk, Andre Kühne, Todd R. Kueny Sr, Goran -Krampe, David Krentzlin, Ben Kurtz, Michele La Monaca, Micky +Krampe, David Krentzlin, Ben Kurtz, Sebastien Marie, Michele La Monaca, Micky Latowicki, Kristian Lein-Mathisen, "LemonBoy", John Lenz, Kirill Lisovsky, Jürgen Lorenz, Kon Lovett, Lam Luu, Arthur Maciel, Vitaly Magerya, Leonardo Valeri Manera, Claude Marinier, Dennis Marti, diff --git a/scheduler.scm b/scheduler.scm index 18d7411e..4d5b11d0 100644 --- a/scheduler.scm +++ b/scheduler.scm @@ -219,7 +219,9 @@ EOF (loop (cdr lst)) ) ) ) ) ) ) ;; Unblock threads blocked by I/O: (if eintr - (##sys#force-primordial) ; force it to handle user-interrupt + (begin + (##sys#update-thread-state-buffer ct) + (##sys#force-primordial)) ; force it to handle user-interrupt (unless (null? ##sys#fd-list) (##sys#unblock-threads-for-i/o) ) ) ;; Fetch and activate next ready thread:Trap