2013-03-08 Christopher Faylor * spawn.cc (child_info_spawn::worker): Save and restore my_wr_proc_pipe around non-execing operations to avoid handle leak seen in http://cygwin.com/ml/cygwin/2013-03/msg00152.html . 2013-03-07 Corinna Vinschen * include/sys/un.h (UNIX_PATH_MAX): Rename from UNIX_PATH_LEN to follow Linux. * fhandler_socket.cc: Change UNIX_PATH_LEN to UNIX_PATH_MAX throughout. (fhandler_socket::recv_internal): Don't return prematurely in case of successful return. For AF_LOCAL sockets, overwrite returned AF_INET name with AF_LOCAL name. 2013-03-07 Corinna Vinschen * fhandler_socket.cc (fhandler_socket::bind): Fix check for AF_LOCAL filename length to allow non-NUL terminated strings within namelen bytes. Copy over sun_path to local array sun_path to have a NUL-terminated string for subsequent function calls. Move path_conv check before OS bind call to not bind the socket before being sure the file doesn't exist. Add and fix comments. 2013-03-06 Corinna Vinschen * mount.cc (fs_names): Add trailing NULL element to avoid potential SEGV in format_proc_filesystems. 2013-03-01 Christopher Faylor * exceptions.cc (exception::handle): Eliminate buggy recursed variable; just check if we're exiting. 2013-02-26 Corinna Vinschen * include/pthread.h (pthread_atfork): Add missing declaration. 2013-02-20 Yaakov Selkowitz * include/error.h (error_message_count): Declare as dllimport. (error_one_per_line): Ditto. (error_print_progname): Ditto. 2013-02-08 Corinna Vinschen * child_info.h (CURR_CHILD_INFO_MAGIC): Update. (class child_info_fork): Drop extraneous semicolon. 2013-02-04 Corinna Vinschen * fhandler_socket.cc (fhandler_socket::bind): Fix error code for empty filename. 2013-02-04 Corinna Vinschen * fhandler_socket.cc (fhandler_socket::bind): Fix length check of AF_LOCAL filename so it never accesses memory beyond namelen. Also make sure filename is NUL-terminated. 2013-01-31 Christopher Faylor * DevNotes: Add entry cgf-000022. * cygtls.h (_cygtls::func): Define as a sa_sigaction style function. * exceptions.cc (sig_handle_tty_stop): Ditto. (_cygtls::interrupt_setup): Fix coercion to accommodate 'func' change. (ctrl_c_handler): Use tty kill_pgrp to send a signal. (sigpacket::process): Don't process sigflush here. (_cygtls::call_signal_handler): Reorganize to avoid a race. Always call sa_sigaction style function. * fhandler_termios.cc (is_flush_sig): Define new function. (tty_min::kill_pgrp): Handle tty flush when signal detected. (fhandler_termios::bg_check): Be slightly more paranoid about checking for valid tty. (fhandler_termios::sigflush): Don't flush unless tty owner. * fhandler_tty.cc (fhandler_pty_slave::ioctl): Use tty kill_pgrp to send signal. (fhandler_pty_master::ioctl): Ditto. * signal.cc (killsys): Delete definition. * sigproc.h (killsys): Delete declaration. * include/cygwin/signal.h (siginfo_t): Simplify union/struct nesting slightly. Implement mechanism to allow cygwin data passing. 2013-01-23 Christopher Faylor * miscfuncs.cc (__import_address): Check if malloc field points directly at 'malloc'. 2013-01-23 Christopher Faylor * miscfuncs.cc (__import_address): On second thought, the chance that this pointer could be NULL is very low so don't bother checking for it. 2013-01-23 Christopher Faylor * exceptions.cc (exception::handle): Make attempt to recursively dump stack fatal. 2013-01-22 Christopher Faylor * miscfuncs.cc (__import_address): Avoid NULL explicitly. 2013-01-22 Christopher Faylor * miscfuncs.cc (__import_address): Avoid treating random instructions as import jump. * malloc_wrapper.cc (malloc_init): Remove comment about 64-bit. 2013-01-21 Christopher Faylor * dcrt0.cc (dll_crt0_1): Comment assumption. * exceptions.cc (sigpacket::setup_handler): Avoid sending signals during fork processing. 2013-01-21 Christopher Faylor * dcrt0.cc (dll_crt0_1): Flag that we are working "incyg". Handle any signals (presumably exiting signals) which may have come in while we are in the process of setting up. 2013-01-21 Christopher Faylor * update-copyright: Recognize configure.ac scripts too. 2013-01-21 Christopher Faylor * cygerrno.h (__reg3): Define. * cygmalloc.h (__reg3): Ditto. 2013-01-21 Christopher Faylor * cygerrno.h: Conditionally define __regN for cygserver. 2013-01-20 Christopher Faylor * malloc_wrapper.cc (malloc_init): Re-add inadvertently dropped comment which explains what's going on with the use_internal calculation. 2013-01-20 Christopher Faylor Throughout, update copyrights to reflect dates which correspond to main-branch checkins. Regularize copyright format. 2013-01-20 Christopher Faylor Throughout, change __attribute__ ((regparm (N))) to just __regN. Throughout, (mainly in fhandler*) start fixing gcc 4.7.2 mismatch between regparm definitions and declarations. * gendef: Define some functions to take @ declaration to accommodate _regN defines which use __stdcall. * gentls_offsets: Define __regN macros as empty. * autoload.cc (wsock_init): Remove unneeded regparm attribute. * winsup.h (__reg1): Define. (__reg2): Define. (__reg3): Define. * advapi32.cc (DuplicateTokenEx): Coerce some initializers to avoid warnings from gcc 4.7.2. * exceptions.cc (status_info): Declare struct to use NTSTATUS. (cygwin_exception::dump_exception): Coerce e->ExceptionCode to NTSTATUS. * fhandler_clipboard.cc (cygnativeformat): Redefine as UINT to avoid gcc 4.7.2 warnings. (fhandler_dev_clipboard::read): Ditto. 2013-01-20 Christopher Faylor * update-copyright (update_maybe): Accommodate perl-style copyright comments. 2013-01-20 Christopher Faylor * update-copyright: Silently skip nonexistent files. Display filename on update. Don't update non-Red Hat copyrights. 2013-01-20 Christopher Faylor * update-copyright: Update standard copyright information based on cvs log and current sandbox status. 2013-01-20 Christopher Faylor * malloc_wrapper.cc: Change 'use_internal_malloc' to 'use_internal' throughout. (export_malloc_called): Delete. (internal_malloc_determined): New variable. (malloc_init): Control calculation of internal/external malloc based on 'internal_malloc_determined'. Use import_address() to determine if malloc in user_data is ours or not. * miscfuncs.cc (thread_wrapper): Make static. (__import_address): Define new function. * miscfuncs.h (import_address): New define. (__import_address): Declare new function. 2013-01-20 Christopher Faylor * sigproc.cc (sig_dispatch_pending): Add correct regparm attributes to match declaration. (pid_exists): Ditto. (proc_subproc): Ditto. (sig_clear): Ditto. (sig_send): Ditto. (checkstate): Ditto. 2013-01-19 Corinna Vinschen * syscalls.cc (rename): Remove ill-conceived NFS workaround from 2013-01-10 for self-inflicted NFS server problem. 2013-01-19 Christopher Faylor * exceptions.cc (ctrl_c_handler): Remove special-case handler for "cygwin_finished_initializing". * sigproc.cc (exit_thread): Undefine ExitThread earlier to avoid recursion on error return. 2013-01-18 Corinna Vinschen * errno.cc (errmap): Map ERROR_LOCK_VIOLATION to EBUSY. 2013-01-18 Corinna Vinschen * mmap.cc (handler_disk_file::msync): Add call to FlushFileBuffers to implement MS_SYNC. 2013-01-17 Christopher Faylor * mmap.cc (handler_disk_file::msync): Retry up to 99 times if FlushViewOFile fails with ERROR_LOCK_VIOLATION. 2013-01-16 Christopher Faylor * sigproc.cc (no_signals_available): Finally remove this macro entirely. (exit_thread): Ensure process lock is released on error exit. (sig_send): Simplify "its_me" test. Remove no_signals_available tests. 2013-01-16 Christopher Faylor * pthread.cc (pthread_exit): Add kludge to accommodate noreturn attribute. 2013-01-14 Antti Kantee * include/pthread.h (pthread_exit): Mark as "noreturn". 2013-01-14 Christopher Faylor * exceptions.cc (signal_exit): Move captive process termination... (_cygtls::interrupt_setup): ...into here. (sigpacket::process): Simplify setting of handler when have_execed. (_cygtls::interrupt_setup): Don't call proc_subproc when we've execed. * globals.cc (exit_states): Delete unneeded ES_EXEC_EXIT. * pinfo.cc (pinfo::exit): Change debugging output. Call proc_terminate rather than the now-obsolete sigproc_terminate. Don't set exit_state to ES_EXEC_EXIT. Set exit_state to ES_FINAL later. * sigproc.cc (sigproc_terminate): Delete function. (wait_sig): Don't call proc_subproc if have_execed. * sigproc.h (sigproc_terminate): Delete declaration. * sync.h (lock_process::lock_process): Don't set exit_state to ES_PROCESS_LOCKED. (lock_process::operator LONG): Define. 2013-01-11 Christopher Faylor * DevNotes: Add entry cgf-000021. * select.cc (select): Unconditionally return when a signal is detected. (select_stuff::wait): Ditto. 2013-01-11 Corinna Vinschen * syscalls.cc (rename): Drop handling paths > 32757 chars, emit EINVAL instead, thus simplifying code allocating and filling pfri. Drop size and use constant expression in NtSetInformationFile call. Add comments. Drop redundant test for fs_serial_number and change comment accordingly. 2013-01-11 Thomas Wolff * fhandler.h (class dev_console): Flag for expanded control sequence. * fhandler_console.cc (char_command): Supporting cursor style modes. 2013-01-10 Corinna Vinschen * path.h (path_conv::fs_type): New method. * syscalls.cc (rename): Check for cross-device situation before touching anything. Explain why. Workaround NFS bug in call to NtSetInformationFile(FileRenameInformation). 2013-01-09 Corinna Vinschen * cygerrno.h: Fix copyright. * exceptions.cc: Drop comment explaining removed variable. 2013-01-09 Corinna Vinschen * dcrt0.cc (main_thread_sinit): New inline function. Fix and explain a stdio initialization issue. (dll_crt0_1): Call main_thread_sinit rather than __sinit. 2013-01-07 Christopher Faylor * thread.cc (pthread_rwlock::lookup_reader): Remove parameter: always assume that we're looking for the current thread. (pthread_rwlock::tryrdlock): Eliminate self variable. Accommodate change in lookup_reader(). (pthread_rwlock::unlock): Ditto. (pthread_rwlock::rdlock): Ditto. Move add_reader call after writer tests to more closely mimic old behavior. (pthread_rwlock::wrlock): Accommodate change in lookup_reader(). * thread.h ((pthread_rwlock::lookup_reader): Eliminate argument. 2013-01-07 Christopher Faylor * thread.cc (pthread_rwlock::add_reader): Perform new operation here and return pointer to allocated RWLOCK_READER structure. (pthread_rwlock::rdlock): Reorganize to reflect new add_reader functionality. (pthread_rwlock::tryrdlock): Ditto. Remove unneeded call to lookup_reader(). * thread.h (pthread_rwlock::RWLOCK_READER::RWLOCK_READER): New constructor. (pthread_rwlock::add_reader): Reflect new functionality. 2013-01-03 Christopher Faylor * globals.cc (exit_states): Renumber so that ES_EXIT_STARTING is first, as intended. * sigproc.cc (wait_sig): Only stop accepting signals after exit_state > ES_EXIT_STARTING. 2013-01-03 Christopher Faylor * sigproc.cc (exit_thread): Set thread signal mask so that no signals are sent to an exiting thread. 2013-01-02 Christopher Faylor * sigproc.cc (no_signals_available): Remove exit_state test since signals are available in a limited fashion when exiting. (sig_dispatch_pending): Ditto. (sig_send): Ditto. (exit_thread): Rearrange to avoid an unnecessary DuplicateProcess when exiting. (wait_sig): Allow special signals when exiting. 2013-01-02 Christopher Faylor * DevNotes: Add entry cgf-000020, relating to previous checkin. 2013-01-02 Christopher Faylor * cygtls.h (_cygtls::signal_exit): Delete from class. * exception.h (cygwin_exception): New class. (cygwin_exception::dumpstack): Declare new function. (cygwin_exception::context): Ditto. (cygwin_exception::dump_exception): Ditto. * exceptions.cc (cygwin_exception::dump_exception): Move into cygwin_exception class. Accommodate new variable names. (cygwin_exception::dumpstack): Ditto stackdump -> dumpstack. (exception::handle): Move andreas processing earlier. Defer signal processing decisions to the signal thread where they belong. Pass exception information to sig_send via new siginfo_t si_cyg field. (ctrl_c_handler): Wait for SIGHUP signal to be processed since it could cause a process exit and we don't want races with thread exit lock. (signal_exit): Move back here from sigproc.cc. Modify arguments and remove from sigpacket class. Decide when to dump core based on signal type. (sigpacket::process): Handle exiting signals in context of threads rather than in the signal thread. Signal debugger on non-Windows signals. Remove setup_signal_exit call. * sigproc.cc (no_signals_available): Remove argument. (signal_exit_code): Delete. (close_my_readsig): Ditto. (_cygtls::signal_exit): Move to exceptions.cc. (sigproc_terminate): Don't attempt to terminate signal thread. (setup_signal_exit): Delete. (exit_thread): Use new si_cyg entry in siginfo_t. (sig_send): Just use empty initializer for si. Accommodate change in no_signals_available argument. (wait_sig): Remove attempt to "go asynchronous" on process exit. Delete __SIGEXIT handling. Don't ever exit. * sigproc.h: Remove __SIGEXIT from signal enum. Renumber. * include/cygwin/signal.h (siginfo_t): Add si_cyg entry.