2009-01-26 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / io-layer / ChangeLog
index 498082f196cc97f9a11194a74b961b172dc9a1e8..6038a46c9a8c0b1a2ebf3efff9ada41eecd4536c 100644 (file)
@@ -1,3 +1,394 @@
+2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * threads.c: Add wapi_current_thread_desc that produces
+       a string representation of the current thread state.
+
+       * threads.h: Export wapi_current_thread_desc.
+
+2009-01-18  Zoltan Varga  <vargaz@gmail.com>
+
+       * io.c (GetDiskFreeSpaceEx): Applied patch from Koushik Dutta
+       (koush@koushikdutta.com). Disable this on android.
+
+2009-01-16  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * handles.c (_wapi_handle_timedwait_signal_handle): Don't use the
+       set_wait_handle/clear_wait_handle machinery for alertable waits in
+       case of non-alertable waits.
+
+       Non-alertable waits must continue and wait on the cond as this will
+       release the lock. Otherwise this will cause a deadlock as anyone trying
+       to pulse the cond will block trying to acquire the said lock because
+       the thread in non-alertable wait will be busy looping in WaitForSingleObjectEx
+       or similar function, never releasing the lock.
+
+       Thou this fixes quite a few of the hangs introduced by non-pooling alertable
+       waits, the long term plan is to verify if all non-alertable waits really need
+       to be as such.
+
+2009-01-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * handles-private.h (_wapi_handle_set_signal_state): Set the signalled state
+       of the handle while locking the global signal cond mutex.
+
+       * wait.c (WaitForMultipleObjectsEx): Check the signalled state of handles
+       inside the critical section before waiting, otherwise we could go to waiting
+       even when the handles are already signalled.
+
+2009-01-13  Zoltan Varga  <vargaz@gmail.com>
+
+       Reapply r122913, this time handling processes by falling back to polling.
+       
+       * handles.c: Rework the way the global signal stuff is handled: instead of
+       allocating a separate mutex/condvar pair for it, allocate a normal handle.
+       This way, it can reuse the alertable waiting code, allowing 
+       WaitForMultipleObject to work without polling.
+
+2009-01-09  Miguel de Icaza  <miguel@novell.com>
+
+       Incorporate a few patches from Paolo, slightly modified:        
+
+       * handles.c (_wapi_handle_check_share): On non-Linux systems, do
+       not even compile in the code that scans for /proc/fd, and go
+       directly to the fallback function.
+
+2009-01-09  Paolo Molaro (lupus@ximian.com)
+
+       * handles.c: Do not include some header files in platforms that
+       lack it.
+
+2009-01-09  Miguel de Icaza  <miguel@novell.com>
+
+       * messages.c: Eliminate a warning.
+       
+2009-01-09  Paolo Molaro (lupus@ximian.com)
+
+       * error.c: On some platforms that do not define these variables,
+       do not use them.
+
+       * security.c, io-private.h: Only include some headers if they
+       exist on the system
+
+       * sockets.c, sockets.h: do not import on this header files that
+       are only consumed internally in sockets.c.
+
+2009-01-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * threads.c (_wapi_thread_apc_pending): Check for thread->wait_handle ==
+       INTERRUPTION_REQUESTED_HANDLE too.
+       (wapi_interrupt_thread): Rework the comments, the thread is no longer
+       required to call QueueUserAPC to make the wait functions return.
+
+       * threads.c handles.c threads-internal.h: Implement alertable waits without
+       polling.
+
+2009-01-08  Geoff Norton  <gnorton@novell.com>
+
+       * processes.c: Fix the osx version check to properly detect 10.5 v 10.4
+
+2009-01-08  Christian Prochnow  <cproch@seculogix.de>
+
+       * types.h: added WapiULargeInteger.
+
+       * uglify.h: added ULARGE_INTEGER, PULARGE_INTEGER.
+
+       * io.h: added WapiDriveType, added method declarations
+       for GetDiskFreeSpaceEx and GetDriveType
+
+       * io.c: added GetDiskFreeSpaceEx() to query disk size
+       and free space via statvfs or statfs system call.
+       added GetDriveType to query drive type via /etc/mtab or /etc/mnttab.
+
+2009-01-07  Geoff Norton  <gnorton@novell.com>
+
+       * processes.c: Properly implement support for Process.Modules on OSX.
+       Fixes OSX on nunit 2.4
+
+2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * io.c (GetCurrentDirectory): Avoid calling g_get_current_dir straight
+       away as it doesn't handle ENAMETOOLONG correctly. As a bonus we avoid
+       allocating memory in the common path.
+
+2009-01-07  Geoff Norton  <gnorton@novell.com>
+
+        * processes.c: Only use open -W on OSX 10.5+.  Patch from
+        Miguel
+
+2008-12-19  Bill Holmes  <billholmes54@gmail.com>
+
+       * processes.c (get_module_name) : adjust size for unicode characters.
+
+       Code is contributed under MIT/X11 license.
+
+2008-11-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * atomic.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>. Add
+       netbsd support.
+
+2008-11-18  Mark Probst  <mark.probst@gmail.com>
+
+       * atomic.h: InterlockedExchangePointer and
+       InterlockedCompareExchangePointer for PPC64.
+
+       Code submitted by andreas.faerber@web.de at
+       https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
+       X11/MIT license.
+
+2008-11-13  Bill Holmes  <billholmes54@gmail.com>
+
+       * wait.h : Adding method declaration for WaitForInputIdle.
+         
+       * wait.c : Adding implementation for WaitForInputIdle.
+         
+       Code is contributed under MIT/X11 license.
+
+Fri Oct 17 15:23:00 CEST 2008 Paolo Molaro <lupus@ximian.com>
+
+       * processes.c: patch from Geoff Norton (gnorton@novell.com) to
+       strdup the open program on OSX (bug #431811).
+
+2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * versioninfo.c: remove the use of g_strdown.
+
+2008-09-25  Dick Porter  <dick@ximian.com>
+
+       * wait.c: Make sure we keep references to handles we're waiting
+       for.  Fixes bug 424851.
+
+2008-07-29  Dick Porter  <dick@ximian.com>
+
+       * processes.c (get_module_name): Make a last-ditch effort to
+       figure out the process name.  Fixes bug 413723, patch by Casey
+       Marshall <casey.s.marshall@gmail.com>
+
+2008-07-28  Dick Porter  <dick@ximian.com>
+
+       * handles.c (_wapi_handle_count_signalled_handles): Remove an
+       unmatched _wapi_handle_ref().  Fixes bug 410743.
+
+2008-07-15  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * versioninfo.c (map_pe_file): Fix memory leak.
+
+2008-07-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * process-private.h (_WAPI_PROCESS_UNHANDLED_PID_MASK): Fix the amd64 build.
+
+2008-06-27  Dick Porter  <dick@ximian.com>
+
+       * processes.c: Implement a form of process pseudo-handle to allow
+       non-mono processes to be manipulated.  Fixes bug 313231.
+
+       * wait.c: Check for process pseudo-handles and fail if an attempt
+       is made to wait on one.
+
+2008-06-19  Dick Porter  <dick@ximian.com>
+
+       * sockets.c: Implement WSASend() and WSAReceive().
+
+2008-06-02  Dick Porter  <dick@ximian.com>
+
+       * wapi.h: 
+       * Makefile.am: 
+       * messages.h: 
+       * messages.c: Implement FormatMessage, fixes bug 321827.
+
+2008-05-29  Dick Porter  <dick@ximian.com>
+
+       * sockets.c (socket_close): Clear any saved errors
+       (_wapi_connect): Don't save EWOULDBLOCK errors here, as that
+       breaks async connects.  (Bug 377589 test case broken by the
+       previous fix to bug 356552)
+
+2008-05-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * thread-private.h (struct _WapiHandle_thread): Remove 'owner_pid' field. Reorder
+       fields so this struct (which is the biggest of the handle structs) takes less
+       space.
+
+       * threads.c (QueueUserAPC): Make this function signal safe by adding some
+       restrictions on its usage.
+
+2008-05-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * mono-mutex.h: Get rid of the #ifdef __cplusplus defines, use G_BEGIN_DECLS
+       /G_END_DECLS.
+
+2008-05-07  Dick Porter  <dick@ximian.com>
+
+       * io.c (FindNextFile): Handle symlinks correctly.  Fixes bug
+       385765.
+
+2008-04-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * handles.c (_wapi_handle_check_share): Fix a crash introduced by the lazy
+       creation of wapi handle slots.
+
+2008-04-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * handles.c (shared_init): Align _wapi_fd_reserve to a multiple of 
+       _WAPI_HANDLE_INITIAL_COUNT to avoid a problem when allocating handles.
+
+2008-04-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * handles.c: Initialize the handle array entries on demand to save memory.
+
+       * wapi-private.h (_WAPI_HANDLE_INITIAL_COUNT): Decrease this to 256 to save
+       memory.
+
+       * handles-private.h (_WAPI_PRIVATE_MAX_SLOTS): Increase this to 1024*16 to
+       compensate for the decrease in _WAPI_HANDLE_INITIAL_COUNT.
+       
+       * threads.c: Use #ifdef instead of #if for checking for valgrind/memcheck.h.
+
+2008-04-22  Dick Porter  <dick@ximian.com>
+
+       * wapi_glob.c (globextend): Comment out the code using ARG_MAX, as
+       that is broken on the latest opensuse.
+
+2008-04-21  Dick Porter  <dick@ximian.com>
+
+       * io.c (DeleteFile): Disable for now the bug fix for 323389, it's
+       breaking too much other stuff.
+
+2008-04-20  Geoff Norton  <gnorton@novell.com>
+
+       * processes.c: Fix the _NSGetEnviron define to prevent an impropoer
+       pointer dereference.
+
+2008-04-18  Miguel de Icaza  <miguel@novell.com>
+
+       * Applied patch from Dick Porter from bug #380649
+
+2008-04-17  Dick Porter  <dick@ximian.com>
+
+       * io.c (DeleteFile): Check file shares before deleting a file.
+       Fixes bug 323389.
+
+2008-04-17  Dick Porter  <dick@ximian.com>
+
+       * io.c (DeleteFile): Return ERROR_ACCESS_DENIED if the file is
+       readonly.  Fixes bug 378229.
+
+2008-04-11  Geoff Norton  <gnorton@novell.com>
+
+       * processes.c: The global extern environ doesn't exist on Mac.  We
+       need to call NSGetEnviron instead.
+
+2008-04-08  Dick Porter  <dick@ximian.com>
+
+       * processes.c (CreateProcess): Improve the managed binary support,
+       so it works when the executable is passed in as the appname.
+       Fixes bug 377815.
+
+2008-04-04  Dick Porter  <dick@ximian.com>
+
+       * io.c (MoveFile): Check file shares before moving a file.  Fixes
+       bug 377049.
+
+2008-04-04  Dick Porter  <dick@ximian.com>
+
+       * error.c (errno_to_WSA): handle ENODEV.  Fixes the reopened part
+       of bug 324035.
+
+2008-04-04  Dick Porter  <dick@ximian.com>
+
+       * processes.c (GetModuleInformation): 
+       * versioninfo.h: 
+       * versioninfo.c: 64bit fixes
+
+2008-04-03  Dick Porter  <dick@ximian.com>
+
+       * io-portability.c (_wapi_basename, _wapi_dirname): Only turn \
+       into / when MONO_IOMAP is in effect.  Fixes bug 346123.
+
+2008-04-03  Dick Porter  <dick@ximian.com>
+
+       * timefuncs.c (GetTickCount): Use mono_msec_ticks(), see bug
+       347476.
+
+2008-04-01  Dick Porter  <dick@ximian.com>
+
+       * versioninfo.c (get_string_block): Refine the fix for bug 354856
+       (r93661) so that it also fixes the new part of bug 374600.
+
+2008-03-28  Dick Porter  <dick@ximian.com>
+
+       * processes.c (GetExitCodeProcess): Check if a process has exited
+       and recorded it's exit code, before seeing if the process is
+       signalled.  Fixes bug 325463.
+
+2008-03-27  Dick Porter  <dick@ximian.com>
+
+       * processes.c (match_procname_to_modulename): Check the whole
+       process name first, in case it is recorded as an absolute path.
+       Fixes bug 360348.
+
+2008-03-27  Dick Porter  <dick@ximian.com>
+
+       * processes.c (ShellExecuteEx): Grotty kludge to work around
+       unpleasant feature in g_shell_parse_argv() where it treats '#'
+       embedded in a filename as a comment marker, and throws away the
+       rest of the line.  When we're directly opening URLs quote the
+       filename, to avoid this.  Fixes bug 371567.
+
+2008-03-25  Dick Porter  <dick@ximian.com>
+
+       * wapi-private.h (_WAPI_HANDLE_VERSION): Increment file layout
+       version
+
+       * threads.c: Make thread handles private to the process that owns
+       them.
+
+2008-03-22  Kornél Pál  <kornelpal@gmail.com>
+
+       * io-layer.h: Windows: Rename GetProcessId to __GetProcessId for targets not
+       supporting it. This fixes MSVC build with new Windows SDKs that declare
+       GetProcessId unconditionally.
+
+2008-03-20  Kornél Pál  <kornelpal@gmail.com>
+
+       * io-layer.h: Removed Windows version macros.
+
+Thu Mar 13 16:24:53 CET 2008 Paolo Molaro <lupus@ximian.com>
+
+       * processes.c: properly check for executable files (fixes bug #368829).
+
+2008-02-05  Dick Porter  <dick@ximian.com>
+
+       * versioninfo.c (VerLanguageName): Implement VerLanguageName.
+
+2008-01-31  Bill Holmes  <billholmes54@gmail.com>
+       * processes.c (match_procname_to_modulename) : Added to check if the last 
+         part of module name is equal to the process name.
+
+       * processes.c (EnumProcessModules) : Changed the first entry in the returned 
+         modules array (the process module) to be populated from the entry found
+         in /proc/<PID>/maps.
+
+       * processes.c (get_module_name & GetModuleInformation) : In the case where 
+         the module passed in is NULL, search the /proc/<PID>/maps for a name that
+         matches the process name to populate the return information.
+
+       Fixes #357062
+
+2008-01-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * security.c (RevertToSelf): Make this return TRUE if impersonating is not
+       supported.
+
+       * sockets.c (_wapi_connect): Add a workaround to a solaris x86 problem where
+       getsockopt (SO_ERROR) doesn't return an error code after connect () fails. Fixes
+       #356552.
+
+2008-01-23  Dick Porter  <dick@ximian.com>
+
+       * versioninfo.c (get_string_block): When stepping over the
+       StringTable block, do not read an extra block at the end.  Fixes
+       the new part of bug 354856.
+
 2008-01-19  Dick Porter  <dick@ximian.com>
 
        * versioninfo.c (get_stringtable_block): Cope when the StringTable