On Nov 11, 2016 2:20 AM, php-...@coydogsoftware.net wrote:
>
> Hello Dmitry,
>
> A quick question after considering your comments and doing a bit more
> homework on extension lifetime:
>
> On Thu, Nov 10, 2016 at 08:10:19AM -0600, php-...@coydogsoftware.net wrote:
> >
> > On Thu, Nov 10, 2016 at 08:51:58AM +0000, Dmitry Stogov wrote:
> > >
> > > The patch introduces syscall in the hot function (this may be
> > > optimized).
> >
> > Agreed. That isn't ideal. But the geteuid() call shouldn't be done
> > during opcache initialization when the SHM object is initialized,
> > because EUID might change afterwards. I didn't want to get EUID too
> > early so I erred on the side of caution, getting it at the last possible
> > moment. This is slower but safer because it prevents trivial cross-user
> > cache access from PHP userland. I'm open to suggestion if there's a more
> > "local" initialization function outside of key generation, which is
> > guaranteed to run after EUID changes in both FPM user pool, and
> > mod_ruid2/mod_php.
>
> Looks like OPCache currently does not implement a request_startup_func for
> per-request initialization. I'm assuming this was avoided for
> performance reasons and due to no perceived need until now for
> per-request initialization. This seems like it would be the proper point
> in extension lifetime to call geteuid() and save results in the
> zend_accel_globals struct to use during key construction. Correct? Any
> objection to my implementing this?

See zend_accel_activate() in ZendAccelerator.c

>
> I'm also thinking the stat() for device+inode should be done in opcache
> code at file compilation time; correct?

It's not a problem to make extra stat() at script compile (I think we already 
do it to record mtime), however we will have to do it also on each access.

>
> Would this be a step in the right direction? Apologies if these are
> basic questions; I'm new to PHP extensions but strongly motivated to fix
> OPCache keys quickly. I may have time for a second pass at this over the
> weekend.

I see your point, but I don't like a quick fix, I like a "good" fix.
And I hope, our discussion could lead us to some better solution :)

Thanks. Dmitry.

>
> -php-dev at coydogsoftware dot net

Reply via email to