[Openmcl-devel] freshly built wx86cl64.exe crashes on start
Tim McNerney
mc at media.mit.edu
Fri Jan 6 22:13:28 PST 2023
Hi Bharat,
Most CCL code is relocatable, but there are resources, including tables
and low-level code, that /must/ be at fixed locations in low memory.
Matt Emerson is right on this point. There is little to debate here.
I believe the ASLR feature can be disabled on a per-executable basis.
This way most of the apps can stay secure from malware while at the same
time supporting allowing legacy code to run on newer Microsoft operating
systems, unmodified. I don't know if ASLR can be disabled using an
environment variable or file properties or whether you have to call a
routine at startup. This is well worth researching.
--Tim
On 1/6/23 7:44 PM, Bharat Shetty wrote:
> If someone can run ccl with these settings disabled
>
> * Mandatory ASLR (force randomisation for images - force relocation
> of images not compiled with Bottom-up ASLR )
> * Randomise memory allocation (Bottom-up ASLR)
> * High Entropy ASLR
>
> You should be able to run ccl for some more time on windows 10.
> Unfortunately I cannot meddle with these currently in my setup. But
> then it is just a matter of time before these behaviours may change.
> More and more the anti virus and anti malware software are insisting
> you enable these.
>
> There are multiple things involved here but the main thing is we can
> longer assume fixed locations for various sections. The code will have
> to be made relocatable. Besides this we have to investigate and ensure
> there are no issues related to (improper usage of) executable stack,
> making heap executable using malloc/brk/sbrk. ccl does not seem to do
> this. However I do not understand the ccl code fully to be sure
> there are no more issues.
>
> Regards,
> Bharat
>
> On Sat, Jan 7, 2023 at 3:51 AM R. Matthew Emerson <rme at acm.org> wrote:
>
>
>
> > On Jan 6, 2023, at 2:01 PM, Bharat Shetty <bshetty at gmail.com> wrote:
> >
> > Is there some place we can get more details on the start up
> code/low address stuff in lisp-kernel, LAP, level-0 etc.? The info
> in the current and old ccl manual at trac is bit high level.
>
> I think it would be best to figure out how to tell Windows to stop
> applying its disruptive protection settings rather than expend a
> lot of effort researching and possibly making a big CCL change
> that will, at best, result in the status quo but slightly worse.
>
> I think it’s reasonable for a process to want to have control over
> its address space. I would be surprised if Windows stops allowing
> that.
>
>
> > On Thu, Jan 5, 2023 at 2:03 PM Bharat Shetty <bshetty at gmail.com>
> wrote:
> > Unfortunately yes in low memory for now. But as I pointed
> earlier there might be issues with heap locations as well (windows
> handling FTH).
> >
> > Regards,
> > Bharat
> >
> > On Thu, Jan 5, 2023 at 5:27 AM R. Matthew Emerson <rme at acm.org>
> wrote:
> >
> >
> > > On Jan 4, 2023, at 3:15 PM, Bharat Shetty <bshetty at gmail.com>
> wrote:
> > >
> > > Since two days wx86cl64.exe has been behaving erratically
> (both the version i downloaded and built using gccv4.7.1) it has
> been crashing randomly at startup and emacs is unable to start it
> with slime. I suspect this might be to do with some security
> patches installed.
> > >
> > > So I looked into the windows security controls. Turns out
> windows defender lets us configure "exploit protection setting" by
> configuring the following parameters
> > > •
> > > control flow guard CFG
> > > • Data Execution Prevention DEP
> > > • Mandatory ASLR (force randomisation for images - force
> relocation of images not compiled with Bottom-up ASLR ) -- off by
> default for now
> > > • Randomise memory allocation (Bottom-up ASLR) -- on by
> default
> > > • High Entropy ASLR - needs Bottom-up ASLR to be ON
> > > • validate execution chains (SEHOP)
> > > • validate heap integrity - terminate process when heap
> corruption os detected
> > >
> > > I observed we can get wxcl8664 to run with 'Mandatory ASLR'
> and 'High Entropy ASLR' turned off and with all other options
> enabled. So even if gcc were to enable us to build non PIE
> position independant executable, it is just a matter of time
> before no-pie apps and ccl stops running on windows.
> > >
> > > The only way we can keep ccl running is making the code
> relocatable (PIE) at the earliest. The bright spot is it still
> runs on linux :)
> >
> > The x86 port of CCL uses absolute addresses to reference code
> and other data in low memory. Is this what the problem is?
> >
> > Changing that would be a big hassle.
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.clozure.com/pipermail/openmcl-devel/attachments/20230107/748834d5/attachment.htm>
More information about the Openmcl-devel
mailing list