bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#33014: 26.1.50; 27.0.50; Fatal error after re-evaluating a thread's


From: Paul Eggert
Subject: bug#33014: 26.1.50; 27.0.50; Fatal error after re-evaluating a thread's function
Date: Tue, 30 Oct 2018 21:49:46 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1

Any reason not to cherry-pick this to emacs-26?

No, once we fix it up. Although adding 'volatile' happened to work for Gemini's compiler, it won't suffice in general as the C standard does not require volatile variables to survive their last access (which is what the patch was assuming). Furthermore, Fbyte_code bypasses that patch, so the bug could still occur even if 'volatile' cured the bug in the more-common code path.

A simple way to ensure that the constant vector survives GC is to have exec_byte_code put the vector into a GC-visible slot. As it happens, there's a spare slot that we can appropriate, so this won't cost us stack (or heap) space. I installed the first attached patch into master to do that, and backported the patch series into emacs-26 via the last two attached patches.

Thanks, Gemini, for the good work in debugging this problem and writing that test case. GC bugs can be nasty.

Attachment: 0001-Improve-fix-for-Bug-33014.patch
Description: Text Data

Attachment: 0001-Refer-to-bytecode-constant-vectors-Bug-33014.patch
Description: Text Data

Attachment: 0002-Add-regression-test-for-Bug-33014.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]