<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div id="yiv1591122086"><div><div style="background-color: rgb(255, 255, 255); font-family: 'times new roman', 'new york', times, serif; "><div id="yiv1591122086yui_3_2_0_19_133918270620940" style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; ">Today, rather randomly, I got an unhandled NullReferenceException in mcs/class/System/System.IO/DefaultWatcher.cs at line 221 -- "files" was null.  All the places that "files" gets set can't be null, except for the one on line 204, a call to Directory.GetFileSystemEntries().  That led to mcs/class/corlib/System.IO/Directory.cs line 497, which led to <span style="font-size: 12pt; ">mcs/class/</span><span style="font-size: 12pt; ">corlib/System.IO/MonoIO.cs line 177, which led to a C function called
 ves_icall_System_IO_MonoIO_GetFileSystemEntries(), which starts at line 319 of mono/metadata/file-io.c .  That function can return null in several different ways.</span></div><div id="yiv1591122086yui_3_2_0_19_133918270620940" style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><span style="font-size: 12pt; "><br></span></div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; ">Looking around, this seems to be a general problem...</div><div style="color: rgb(0, 0, 0); font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "><br></div><div><div>Files that call GetFileSystemEntries() and check for null:</div><div>mcs/class/System.Web/System.Web.Hosting/ApplicationHost.cs</div><div><br></div><div>Files that call GetFileSystemEntries() without checking for
 null:</div><div>mcs/class/Compat.ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarEntry.cs</div><div>mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib/Tar/TarEntry.cs</div><div>mcs/class/Microsoft.Build.Utilities/Mono.XBuild.Utilities/MSBuildUtils.cs</div><div>mcs/class/Mono.Posix/Mono.Unix/UnixDirectoryInfo.cs</div><div>mcs/class/System/System.IO/DefaultWatcher.cs</div><div>mcs/tools/macpack/MacPack.cs</div><div>mcs/tools/monodoc/Lucene.Net/Lucene.Net/SupportClass.cs</div><div><br></div><div>Files with a GetFileSystemEntries() that can return null:</div><div>mcs/class/corlib/Linux/Linux.cs</div><div>mono/metadata/file-io.c</div><div><br></div><div>If fixing this is as simple as adding null checks to the affected areas, I can crank that out and submit a patch.  Otherwise, someone more knowledgeable than me needs to look into this.</div><div><br></div><div>I don't see any bug reports in either bugzilla.novell.com or
 bugzilla.xamarin.com about this issue.  I searched "Mono class libraries" and "Mono runtime".  There were a few other issues related to GetFileSystemEntries(), but none that sounded like this.  So I filed one... https://bugzilla.xamarin.com/show_bug.cgi?id=5591 .</div><div><br></div><div>Steven Boswell</div><div><br></div></div></div></div></div></div></body></html>