Ok, I have a new PR just to unlock around Sleep(): https://github.com/php/php-src/pull/1536
Just by unlocking around Sleep() the OpenFileMapping loop will work. Holding the lock in that loop will not only block detach_segments() in other PHP processes but also reattaching in accel_startup(). Checking the base address used when this issue occurs during some of my stress testing, most of the time the base address used is the first in vista_mapping_base_set. Its typically the timing between the locking and mapped file operations between processes more often than the base address selection. Especially ASLR, also PECL DLLs, and other factors will still cause this issue occasionally, but this fixes a majority of my occurrences. Regards -M On Wed, Sep 23, 2015 at 2:04 AM, Dmitry Stogov <dmi...@zend.com> wrote: > Hi Matt, > > It looks like with your patch, the same file may be mapped to different > virtual addresses of different processes and this won't work. > I think usage of vista_mapping_base_set[] in your patch is wrong. > > Do I understand properly, that zend_shared_alloc_unlock/lock_win32() > around Sleep() is the main part of the patch? > > Please, next time, try to make PR diffs as small as possible (without > messing real fix with formatting and rearranging changes). > > Thanks. Dmitry. > > > > On Wed, Sep 23, 2015 at 10:10 AM, Matt Ficken <themattfic...@gmail.com> > wrote: > >> I want to increase visibility for my PR 1531, >> https://github.com/php/php-src/pull/1531, my patch for fixing an >> intermittent OpCache issue on Windows. >> >> Details, etc... are on the PR. >> >> Regards >> -M >> > >