← Back to team overview

kicad-developers team mailing list archive

Re: wxFileSystemWatcher bug.

 

Thanks for testing this Chris.  I'll commit the patch some time today.

On 6/15/2016 8:14 PM, Chris Pavlina wrote:
> Tested on Linux with NFS and SSHFS mounts, no issue here either.
> 
> On Wed, Jun 15, 2016 at 09:18:21AM -0400, Wayne Stambaugh wrote:
>> Thanks Simon.  I'll commit the patch as soon as I get a chance to test
>> it on Linux.
>>
>> On 6/14/2016 5:12 PM, Simon Wells wrote:
>>> Also tested the patch here, and works fine
>>>
>>> On Wed, Jun 15, 2016 at 8:49 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>>>> Apparently so.  I just add a dummy text file to the remote project
>>>> folder and the text file showed up in the kicad file window.  I deleted
>>>> the file and it disappeared from the kicad file window.  Who knew?
>>>>
>>>> On 6/14/2016 4:47 PM, Simon Wells wrote:
>>>>> Does windows even support filesystemwatcher events on network drives?
>>>>> as would that not make for quite heavy loads on the network?
>>>>>
>>>>> On Wed, Jun 15, 2016 at 8:38 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>>>>>> On 6/14/2016 4:34 PM, Simon Wells wrote:
>>>>>>> It was when opening pcbnew, in each project.
>>>>>>>
>>>>>>> I will test your patch locally as soon as my updated build is done and
>>>>>>> see whether it causes any issues. Just thought i would test without
>>>>>>> first to see if it would be better for it to be ifdef'd out on osx.
>>>>>>>
>>>>>>> I haven't actually looked into the code but based on what you have
>>>>>>> said i assume a fresh filesystemwacther is being created for each
>>>>>>> project open? Would it not be better to just create once on invocation
>>>>>>> and then use RemoveAll()/RemoveTree() on project switch?
>>>>>>
>>>>>> That's what I changed.  I got rid of the deleting a creating a new
>>>>>> wxFileSystemWatcher on every project change.  I just call RemoveAll() on
>>>>>> every project switch().  I'll check to see if I need to call
>>>>>> RemoveTree().  I would have thought RemoveAll() would include the tree
>>>>>> but I could be wrong.  It's odd that it only happens when switching from
>>>>>> a remote project to a local project.
>>>>>>
>>>>>>>
>>>>>>> Simon
>>>>>>>
>>>>>>> On Wed, Jun 15, 2016 at 8:28 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>>>>>>>> Hey Simon,
>>>>>>>>
>>>>>>>> I was seeing the crash when switching back to a local project using the
>>>>>>>> MRU list as well before my patch.  After my patch, the problem went
>>>>>>>> away.  I didn't test opening a new local project but I suspect the crash
>>>>>>>> would occur since the same code is called.  I'm not sure how the GAL
>>>>>>>> changes would effect kicad since it doesn't contain any GAL code and the
>>>>>>>> windows the require GAL are not created until you launch them from KiCad
>>>>>>>> unless something has changed since the last time I looked.  Thanks for
>>>>>>>> testing this.  I'm going to try to allocate m_watcher on the stack and
>>>>>>>> see if destroying the wxFileSystemWatcher object at a different time
>>>>>>>> makes a difference.
>>>>>>>>
>>>>>>>> Wayne
>>>>>>>>
>>>>>>>> On 6/14/2016 4:21 PM, Simon Wells wrote:
>>>>>>>>> Hi Wayne,
>>>>>>>>>
>>>>>>>>> I have tested this on OSX with a mounted network drive, i think that
>>>>>>>>> is the most equivalent to a mapped network drive on windows. And do
>>>>>>>>> not see a crash, But i switched back to the local project using the
>>>>>>>>> recent project list. Does it occur if you use that list as well or
>>>>>>>>> only if you do a fresh open project?
>>>>>>>>>
>>>>>>>>> I am running 6923 currently, Will update as i had a different crash
>>>>>>>>> occur but believe its due to the opengl changes which have been fixed
>>>>>>>>> in 6931/2
>>>>>>>>>
>>>>>>>>> Simon
>>>>>>>>>
>>>>>>>>> On Wed, Jun 15, 2016 at 2:39 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>>>>>>>>>> I found a nasty wxFileSystemWatcher bug on windows (and possibly other
>>>>>>>>>> platforms) when switching between a project on a mapped network drive to
>>>>>>>>>> a project on a local drive.  This crashes kicad every time.  It doesn't
>>>>>>>>>> crash when switching from a local drive to a mapped network drive.  I
>>>>>>>>>> fixed the project switching crash by not deleting and creating a new
>>>>>>>>>> m_watcher object every time a project is loaded.  However, kicad still
>>>>>>>>>> segfaults when running in gdb in the tree view window dtor when the
>>>>>>>>>> m_watcher object is deleted.  I tried disconnecting and unlinking the
>>>>>>>>>> event handler with no luck.  The only thing I didn't try was allocating
>>>>>>>>>> m_watcher on the stack rather than the heap which I would prefer not to
>>>>>>>>>> do.  Before I commit this patch, could I get one of our OSX devs and
>>>>>>>>>> Linux devs to test this patch to make sure it doesn't break anything on
>>>>>>>>>> these platforms.  If you could test the current code by switching
>>>>>>>>>> between remote and local projects to see if it crashes, that would
>>>>>>>>>> useful information to have as well.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> Wayne
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp


References