Patch Name: PHCO_31061 Patch Description: s700_800 11.11 libc cumulative patch Creation Date: 04/07/14 Post Date: 04/08/02 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: OS-Core.C-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP OS-Core.C-MIN-64ALIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP OS-Core.CORE-64SLIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP OS-Core.CORE-SHLIBS,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP ProgSupport.PROG-AUX,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP ProgSupport.PROG-AX-64ALIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP ProgSupport.PROG-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: No Status: General Release Critical: Yes PHCO_31061: ABORT PHCO_30530: ABORT ABORT: ( SR:8606356362 CR:JAGaf17070 ) PHCO_30030: ABORT CORRUPTION MEMORY_LEAK ABORT: ( SR:8606346486 CR:JAGaf07310 ) ABORT: ( SR:8606334316 CR:JAGae95397 ) CORRUPTION: ( SR:8606348669 CR:JAGaf09490 ) MEMORY_LEAK: ( SR:8606345127 CR:JAGaf05977 ) PHCO_29955: ABORT CORRUPTION ABORT: ( SR:8606340796 CR:JAGaf01714 ) CORRUPTION: ( SR:8606333346 CR:JAGae94435 ) PHCO_29495: HANG PHCO_29287: ABORT CORRUPTION PHCO_29029: ABORT MEMORY_LEAK HANG PHCO_28427: ABORT HANG PHCO_27434: HANG Process Hang PHCO_27910: ABORT CORRUPTION HANG PHCO_26870: ABORT CORRUPTION HANG PHCO_26124: ABORT CORRUPTION PHCO_25452: ABORT HANG PHCO_24942: ABORT CORRUPTION PHCO_23427: CORRUPTION PHCO_23772: CORRUPTION PHCO_23093: CORRUPTION Category Tags: defect_repair enhancement general_release critical halts_system corruption memory_leak manual_dependencies Path Name: /hp-ux_patches/s700_800/11.X/PHCO_31061 Symptoms: PHCO_31061: ( SR:8606366307 CR:JAGaf26911 ) Some setuid/setgid root programs invoking catopen(3C), with NLSPATH variable in the /etc/default/nlspath file set to default, dump core. PHCO_30530: ( SR:8606356362 CR:JAGaf17070 ) In few scenarios, catopen(3C) results in core dump. PHCO_30030: ( SR:8606334316 CR:JAGae95397 ) An application dumps core when converting a floating-point value to an integer format, when the conversion results in a value outside the range of the integer format, even when trap on invalid operation is disabled. ( SR:8606346486 CR:JAGaf07310 ) In a few scenarios, multithreaded applications result in high memory growth and abort. ( SR:8606345127 CR:JAGaf05977 ) Memory leak is observed in 64 bit applications allocating blocks of size greater than 2GB. ( SR:8606348669 CR:JAGaf09490 ) Directory entries returned by scandir(3C) in case of 3rd party NFS server may be corrupted. ( SR:8606350122 CR:JAGaf10943 ) A small set of numbers in the highest denormalized range do not get converted by strtod(3C) correctly. PHCO_29955: ( SR:8606338169 CR:JAGae99143 ) Unable to resolve pthread_default_stacksize_np(3T) symbol due to the lack of stub in libc when not linked to pthread library. ( SR:8606333346 CR:JAGae94435 ) In case of 64 bit compilation, mktime(3C) doesn't return error if the broken down time, passed as an argument, is out of range. The resultant structure is corrupted. ( SR:8606340796 CR:JAGaf01714 ) When the context saved by setjmp(3C) is restored by _longjmp(3C) the program aborts and dumps core due to a segmentation violation. ( SR:8606336221 CR:JAGae97274 ) When the manifest constants YESEXPR and NOEXPR are passed as arguments to nl_langinfo(3C), the strings returned are incorrect in case of default language. PHCO_29495: ( SR:8606321633 CR:JAGae84101 ) A multi-threaded application can hang when one thread is performing fork(2) and another thread is performing opendir(3C) or readdir(3C)/ readdir_r(3C). ( SR:8606325440 CR:JAGae87730 ) regcomp() incorrectly includes the anchoring on one side of alternate for the whole expression for non-C locales. ( SR:8606319537 CR:JAGae82025 ) fstyp/bdf/df hang on a VxFS 3.5 filesystem that has more than 14 checkpoints. ( SR:8606321285 CR:JAGae83763 ) The resolver routine, res_query(), does not reject a domain name with two trailing dots. ( SR:8606316926 CR:JAGae79638 ) The pthread_once() function will not invoke the init routine when an application is not linked with libpthread library. PHCO_29287: ( SR:8606308071 CR:JAGae71107 ) When IPv6 is enabled on a system, Internet Services commands do not resolve name/address using NIS and NIS+ sources. ( SR:8606302212 CR:JAGae65573 ) mallinfo(3C) returns incorrect arena/uordblks. ( SR:8606311197 CR:JAGae74052 ) Data loss in large sized fread()/fwrite() requests issued to tape drive. ( SR:8606307452 CR:JAGae70485 ) setlocale() may cause the application to abort and core dump when the application is compiled with the -z flag. PHCO_29029: ( SR:8606294826 CR:JAGae58519 ) A multi-threading Application, which calls gethostbyname hangs on thread cancels. ( SR:8606303142 CR:JAGae66498 ) In a multi-threaded application, calling getcwd(3C) in one thread, may cause API's that do operations on files using a relative path in another thread, to fail. ( SR:8606303454 CR:JAGae66809 ) The realpath() function returns a path with an extra slash when called with a relative path from the root directory. ( SR:8606310639 CR:JAGae73510 ) Memory related problems exist in functions pututline, pututxline, scandir, mbrtowc and regerror. This may leads to abort and core dumps. ( SR:8606315457 CR:JAGae78180 ) localtime(3C) core dumps. PHCO_28427: ( SR:8606282083 CR:JAGae46026 ) Application hangs in free/realloc. ( SR:8606271895 CR:JAGae36074 ) When SBA is turned on, the program is compiled with the -z option and it tries to free the same block twice, a core dump results. ( SR:8606288623 CR:JAGae52554 ) Problem with res_update DNS library resolver routine. ( SR:8606293042 CR:JAGae56792 ) Superuser cannot restrict the paths set in the NLSPATH environment variable for setuid root programs which are using catopen(3C) and executed by others. ( SR:8606300530 CR:JAGae63999 ) calloc miscalculates the requirement PHCO_27740: ( SR:8606264319 CR:JAGae28649 ) This product update is a member of a set needed to enable the optional HP-UX Device IDs feature. Upon installation, the HP-UX Device IDs bundle (DevIDs11i) will install the full set of product updates (including this one) necessary to enable the Device IDs feature. If the HP-UX Device IDs product (DeviceIDs11i) is not installed, this product update to HP-UX will have no impact on your system. PHCO_27434: ( SR:8606258699 CR:JAGae23018 ) Duplicate ( SR:8606261751 CR:JAGae26070 ) Duplicate ( SR:8606265515 CR:JAGae29801 ) When using popen(3S) in different threads or popen(3S) and fork(2) simultaneously in different threads, the process may hang if it is using pclose(3S) subsequently. ( SR:8606262841 CR:JAGae27171 ) strtod(3C) returns the wrong end pointer, when the first argument is "infinity". PHCO_27910: ( SR:8606260114 CR:JAGae24434 ) getipnodebyname() routine returns incorrect results in multi-threaded environment when it is called with an IP address as the argument. ( SR:8606239772 CR:JAGae08197 ) Either or both of the following symptoms may appear on a given system. 1. Service Guard may experience umount(2) failures. 2. System throughput and/or response time may degrade when SPUs are added to a configuration that includes significant getcwd(3C) activity, for example in the SDET benchmark. ( SR:8606257150 CR:JAGae21456 ) opendir(3C) performance may be slow. ( SR:8606254777 CR:JAGae19108 ) gethostbyname() routine returns incorrect results in multi-threaded environment when it is called with an IP address as the argument. ( SR:8606251497 CR:JAGae17562 ) 32bit applications running on 64 bit kernel,which call getresuid(3C) or getresgid(3C) may abort and dump core on systems with greater than 2GB physical memory. ( SR:8606245321 CR:JAGae11794 ) inetd(1M) daemon may hang on 11.11 trusted systems. Inetd services will not work until "inetd -b" is run twice. PHCO_26870: ( SR:8606239772 CR:JAGae08197 ) Either or both of the following symptoms may appear on a given system. 1. Service Guard may experience umount(2) failures. 2. System throughput and/or response time may degrade when SPUs are added to a configuration that includes significant getcwd(3C) activity, for example in the SDET benchmark. ( SR:8606260114 CR:JAGae24434 ) getipnodebyname() routine returns incorrect results in multi-threaded environment when it is called with an IP address as the argument. ( SR:8606257150 CR:JAGae21456 ) opendir(3C) performance may be slow. ( SR:8606254777 CR:JAGae19108 ) gethostbyname() routine returns incorrect results in multi-threaded environment when it is called with an IP address as the argument. ( SR:8606251497 CR:JAGae17562 ) 32bit applications running on 64 bit kernel,which call getresuid(3C) or getresgid(3C) may abort and dump core on systems with greater than 2GB physical memory. ( SR:8606245321 CR:JAGae11794 ) inetd(1M) daemon may hang on 11.11 trusted systems. Inetd services will not work until "inetd -b" is run twice. PHCO_26124: ( SR:8606231691 CR:JAGae00927 ) A user built perl executable aborted when using getpwent(3C) API. ( SR:8606225736 CR:JAGad94809 ) Enhancement providing pre-enablement for a future release of libnsl functionality. The changes in this patch will have no affect on your system. ( SR:8606233401 CR:JAGae02625 ) setlocale(3C) is resulting in core dump when an application compiled with -z option calls setlocale(3C) more than ten times with different locales and categories other than LC_ALL. PHCO_25452: ( SR:8606228311 CR:JAGad97368 ) On a system with duplicate utmpx entries, logname and getlogin were reporting incorrect login-names for the user. ( SR:8606199060 CR:JAGad68247 ) Deadlock occurs when one thread in the process is performing a blocking read (via stdio interfaces like fgets), another thread performs a fork() before the blocking thread could return. ( SR:8606225942 CR:JAGad95015 ) Improve performance of getdate() and clock() in multi-threaded environments. ( SR:8606225355 CR:JAGad94442 ) Application which uses localtime() aborts when built with -z and environment variable TZ set to last entry in /usr/lib/tztab PHCO_24942: ( SR:8606212783 CR:JAGad81970 ) res_query dumps core with large numbers of file descriptors. ( SR:8606205180 CR:JAGad74356 ) regexec() does not handle multibyte characters correctly. ( SR:8606214105 CR:JAGad83296 ) memchr() returns NULL unexpectedly. ( SR:8606203226 CR:JAGad72400 ) When a file stream is opened in write-only mode, an immediate fread() reported failure but an fread() which was followed by a fwrite() reported success. ( SR:8606213123 CR:JAGad82310 ) directory (3C) API's mutex contention. ( SR:8606204965 CR:JAGad74141 ) Default SBA support for C++ applications. ( SR:8606211883 CR:JAGad81071 ) delmntent libc routine deletes the entire mnttab contents. ( SR:8606202970 CR:JAGad72144 ) When a file stream is opened in read-only mode, putw() reports a success though sets the errno to EBADF. ( SR:8606206070 CR:JAGad75245 ) Performance degradation of mktime (). ( SR:8606183079 CR:JAGad52295 ) incorrect freeing of memory in update_mnttab may result in core dump. ( SR:8606215963 CR:JAGad85135 ) 11.11 libc patches install PA1.1 version libc library under /usr/lib on PA2.0 system. PHCO_24400: ( SR:8606204553 CR:JAGad73735 ) getwc() incapable of handling codeset GB18030. ( SR:8606201456 CR:JAGad70632 ) The libc is not IPv6 enabled. ( SR:8606188513 CR:JAGad57721 ) fstyp returns "unknown_fstyp" on VxFS version 4 disk layout file system PHCO_23427: ( SR:8606177629 CR:JAGad46861 ) ptsname corrupts heap SIGBUS may result ( SR:8606196622 CR:JAGad65825 ) Multithreaded application core dumps sometimes when it uses the Name Service Switch calls like getXXent and endXXent. ( SR:8606179946 CR:JAGad49168 ) New feature and not a defect. Initialized TLS support in libc for 64 bit non-threaded applications. ( SR:8606239637 CR:JAGab20870 ) When environment variable TZ is not set, the variables tzname[2] and timezone is set to hard coded values corresponding to Eastern Standard Time. ( SR:8606172344 CR:JAGad41604 ) (1) Trusted system calls made on an 11.0 NIS system causes a SIGSEGV core dump. (2) Using "dns" as a source for databases other than "hosts" causes a SIGSEGV core dump. ( SR:8606194571 CR:JAGad63779 ) getdate fails VSU test case ( SR:8606165366 CR:JAGad34660 ) mallinfo() returns incorrect arena/uordblks. ( SR:8606186527 CR:JAGad55731 ) M_BLOCK behavior for malloc not working correctly. ( SR:8606185046 CR:JAGad54248 ) malloc(3C) has a silent data corruption in fourth quadrant. PHCO_23772: ( SR:8606185984 CR:JAGad55189 ) For those PA-32bit Threaded C Applications which uses C++ plugins and pthread/cma calls in static constructor/destructor, may happen that destructors will be called twice. Non-threaded PA-32 bit applications do not have this problem. PHCO_23093: ( SR:8606162328 CR:JAGad31644 ) Memory Corruption when using fwscanf routine with %lc option. ( SR:8606162140 CR:JAGad31456 ) regcomp(3C) function fails to detect an extended regular expression ( SR:8606170481 CR:JAGad39745 ) sigwait() does not work as cancellation point if the thread is cancelled after it enters __sigwait_sys(). ( SR:8606172179 CR:JAGad41440 ) User cannot use C++ runtime library on 32 bit application ( SR:8606175166 CR:JAGad44410 ) gettimeofday is very slow for certain vendors who use it for time stamping. ( SR:8606164457 CR:JAGad33756 ) Global symbols in libc can conflict with one in program causing SIGBUS. ( SR:8606102984 CR:JAGab69119 ) No externally supported method to pthread safe dynamically loaded libs Defect Description: PHCO_31061: ( SR:8606366307 CR:JAGaf26911 ) Setuid/setgid root programs invoking catopen(3C), with NLSPATH environment variable set, and NLSPATH variable in the /etc/default/nlspath file set to default, may dump core when executed by non-root user. Resolution: catopen(3C) has been modified to resolve the defect. PHCO_30530: ( SR:8606356362 CR:JAGaf17070 ) catopen(3C) may result in core dump in few scenarios. Resolution: catopen(3C) has been modified to resolve the defect. PHCO_30030: ( SR:8606334316 CR:JAGae95397 ) A core dump is forced by the conversion routine when an invalid floating-point operation occurs without checking if the invalid trap bit is set or not. Resolution: The conversion routine has been modified to force a core dump only when the trap bit is set. ( SR:8606346486 CR:JAGaf07310 ) In a few scenarios, multithreaded applications result in unexpected high memory growth. Applications abort due to lack of memory. Resolution: Malloc(3C) has been changed to avoid unexpected memory growth in multithreaded applications. ( SR:8606345127 CR:JAGaf05977 ) malloc(3C) loses allocated memory in 64 bit applications. Resolution: malloc(3C) has been modified to avoid memory leak. ( SR:8606348669 CR:JAGaf09490 ) scandir(3C) doesn't work on directory mounted from 3rd party NFS as NFS misreports directory size. Resolution: scandir(3C) is modified to handle improper directory size reported by third party NFS server. ( SR:8606350122 CR:JAGaf10943 ) For a small set of numbers in the highest denormalized range, strtod(3C) incorrectly rounds the mantissa. Resolution: strtod() has been modified to correctly round the mantissa in the highest denormalised range. PHCO_29955: ( SR:8606338169 CR:JAGae99143 ) Applications which have pthread_default_stacksize_np(3T) call, or applications which call a third party library functions which internally calls pthread_default_stacksize_np(3T) cannot resolve it unless linked to pthread library. Resolution: pthread_default_stacksize_np(3T) stub is provided in libc. ( SR:8606333346 CR:JAGae94435 ) In case of 64 bit compilation, mktime(3C) doesn't return error if the broken down time, passed as an argument, is out of range. Resolution: mktime(3C) has been modified to handle the broken time, passed as its argument, if it is out of range. ( SR:8606340796 CR:JAGaf01714 ) _longjmp(3C) does not handle the stack pointer saved by setjmp(3C) properly which results in a corrupted stack while restoring the context. Resolution: Code introduced for proper handling of the saved stack pointer in _longjmp(3C). ( SR:8606336221 CR:JAGae97274 ) When nl_langinfo(3C) is invoked with YESEXPR and NOEXPR as its arguments, without setting the language explicitly, the resultant strings are incorrect. Resolution: Changes have been made so that proper return values are obtained when manifest constants YESEXPR and NOEXPR are passed as arguments to nl_langinfo(3C) with default language. PHCO_29495: ( SR:8606321633 CR:JAGae84101 ) A deadlock can arise when, in a multi-threaded application, one thread is forking and another thread is performing opendir(3C) or readdir(3C)/readdir_r(3C). This can cause the application to hang. Resolution: Setting right the release of the synchronization lock resolves the deadlock/hang. ( SR:8606325440 CR:JAGae87730 ) regcomp() incorrectly includes the anchoring on one side of alternate for the whole expression for non-C locales. The anchoring on the right side of alternate is assumed for both sides of expression. Resolution: The resolution is to remove the anchoring flag which was earlier set based on the anchoring of alternate expression. ( SR:8606319537 CR:JAGae82025 ) When fstyp/bdf/df command is run on a VxFS 3.5 filesystem that has more than 14 checkpoints, VxFS structural file (meta data) grows beyond a certain limit (has more than one extent) and results in fstyp/bdf/df commands reading a particular block of disk, indefinitely. Resolution: Ensured that the read offset is incremented properly during the structural file reading activity. ( SR:8606321285 CR:JAGae83763 ) The res_query() routine was not processing a domain name with two trailing dots properly. Resolution: The res_query() routine now returns an error and sets the variable h_errno to NO_RECOVERY for domain names with more than one trailing dots. ( SR:8606316926 CR:JAGae79638 ) The pthread_once() stub in libc does not call the init routine. The correct behavior is that it should call the init routine once. Resolution: The pthread_once() libc stub is made to call the init routine once and only once. PHCO_29287: ( SR:8606308071 CR:JAGae71107 ) If IPv6 is enabled on a system, the Internet Services commands use the APIs getipnodeXX() or get*info() to resolve the name instead of the APIs gethostbyXX(). The APIs getipnodeXX() and get*info() look into the ipnodes directive of the /etc/nsswitch.conf to resolve the name/address. As the NIS/NIS+ backends do not respond to the ipnodes directive, the resolution of IPv4 addresses fails for NIS and NIS+ sources. Resolution: The libc APIs get*info() and getipnodebyXX() look into the repositories specified in the ipnodes directive to resolve addresses. If this resolution fails, and if an IPv4 address is requested, get*info()/getipnodebyXX() now performs an additional lookup into the repositories specified with the hosts directive of the /etc/nsswitch.conf file to resolve an IPv4 address. The following behavioral changes can be observed: - The APIs get*info()/getipnodebyXX() may take more time to flag the error, because of the additional lookup in the hosts directive. - A call to the APIs get*info()/getipnodebyXX() may overwrite the storage which is used by the APIs gethostbyXX() to return the result. - If the APIs get*info()/getipnodebyXX() look into the hosts directive of the /etc/nsswitch.conf file, then the error returned is from the repositories specified for the hosts directive rather than the one for ipnodes directive. After installing this patch, an application calling these APIs, with the same set of configuration files (such as /etc/nsswitch.conf, /etc/hosts) may receive a different error number compared to the error number received before this fix. A detailed information is available in the manpage patch PHCO_29328. Install the patch PHCO_29328 before referring to the manpages getipnodebyname.3n, getaddrinfo.3n and gethostent.3n. ( SR:8606302212 CR:JAGae65573 ) mallinfo(3C) doesn't give correct memory statistics if the application is multithreaded and uses multiple arenas. Resolution: Duplicate counting in mallinfo(3C) is avoided. ( SR:8606311197 CR:JAGae74052 ) The asymmetry in request sizes (for large sized requests) in fread()/fwrite() leads to data loss because of tape drive behavior. Resolution: The symmetry of request size is restored for fread()/fwrite() for large sized requests. This resolves the issue. ( SR:8606307452 CR:JAGae70485 ) In an out of memory condition, setlocale() may cause the application to core dump, when the application is compiled with the -z flag. This is due to a NULL pointer dereference. Resolution: Proper checks introduced to resolve this problem in setlocale() function. PHCO_29029: ( SR:8606294826 CR:JAGae58519 ) A multi-threaded application which calls gethostbyname() can hang if several of the threads are cancelled. Resolution: Installed the cleanup handlers to free the resources upon cancellation requests. ( SR:8606303142 CR:JAGae66498 ) In a multi-threaded application, calling getcwd(3C) in one thread may cause an API that relies on relative path name in another thread to fail. Resolution: Modified the getcwd algorithm so that this problem does not occur. ( SR:8606303454 CR:JAGae66809 ) realpath() function adds a slash to separate working directory from relative path (for processing) without checking whether the working directory is root or not. Resolution: slash character to separate working directory from relative path (for processing) is added after ensuring the current directory is not root. ( SR:8606310639 CR:JAGae73510 ) In functions pututline(), pututxline() and scandir(), memory leaks occur in certain situations where the process is on the verge of running out of memory. If a NULL pointer is passed as the second argument to mbrtowc(), it may core dump if the application is compiled with -z. In function regerror(), an out of bounds array access may cause unpredictable results. Resolution: More checks added so that memory leaks, NULL pointer dereferencing and out of bounds array access do not take place. ( SR:8606315457 CR:JAGae78180 ) The TZ variable used by localtime(3C) is not properly being evaluated. Resolution: The TZ variable used by localtime(3C) is now properly being evaluated. PHCO_28427: ( SR:8606282083 CR:JAGae46026 ) Libc malloc(3C) family of API's hang if the complete heap of the process is exhausted and application calls free()/realloc().This happens because of improper handling of resources by malloc(3C) itself. Resolution: The hang problem in free()/realloc()/malloc() is resolved by releasing the resource held by thread. ( SR:8606271895 CR:JAGae36074 ) When SBA is turned on, the program is compiled with the -z option and it tries to free the same block twice, a core dump results. Resolution: In the free(3C) code, an additional check is made to see whether the block being freed is already free. If so, free(3C) returns immediately. ( SR:8606288623 CR:JAGae52554 ) Under certain circumstances, large size packets received by the res_update resolver routine were not handled properly. Resolution: res_update now properly handles packets of all sizes. ( SR:8606293042 CR:JAGae56792 ) Catopen(3C) uses the paths listed in the NLSPATH environment variable for opening the specified catalog file. There is no option for the superuser to restrict the paths listed in NLSPATH. Resolution: Catopen(3C) has been modified to restrict the paths listed in the NLSPATH environment variable. The restrictions are in effect for setuid programs owned by root and executed by others. A new configuration file, "/etc/default/nlspath", allows the superuser to restrict the paths set by others in the NLSPATH environment variable. ( SR:8606300530 CR:JAGae63999 ) calloc miscalculates the requirement Resolution: calloc properly calculate the requirement. PHCO_27740: ( SR:8606264319 CR:JAGae28649 ) This product update contains a minor enhancement required to enable the HP-UX Device IDs feature. When AutoFS unmounts a filesystem, it obtains the device id from the filesystem server. If that server is slow, or not responding, there may be a delay of 15 seconds or more. On systems with many AutoFS managed filesystems and many slow or non-responding servers, the cumulative delay may be quite significant. Resolution: Ensure that each filesystem's device IDs are made available in the /etc/mnttab file (mounted filesystem table) only if the optional HP-UX Device IDs feature is enabled. PHCO_27434: ( SR:8606258699 CR:JAGae23018 ) Duplicate ( SR:8606261751 CR:JAGae26070 ) Duplicate ( SR:8606265515 CR:JAGae29801 ) When using popen(3S) in a multithreaded application, the process can hang waiting in pclose(3S) because of race conditions. Resolution: The popen(3S) and fork(2) were serialised to resolve the race conditions. ( SR:8606262841 CR:JAGae27171 ) In strtod(3C), if the first argument is "infinity", it is returning next to next character after "infinity". But it is supposed to return next character after "infinity". Resolution: strtod(3C) is modified in such a way that, if the first argument is "infinity", then it will return next character after "infinity". PHCO_27910: ( SR:8606260114 CR:JAGae24434 ) When getipnodebyname() is called with an IP address as the argument in a multi-threaded environment, the static global variables may be corrupted as they were not protected for threads. Resolution: The global variables are now protected for threads by defining them locally to the function where they are used. ( SR:8606239772 CR:JAGae08197 ) Obtaining complete filesystem mount information can be a performance problem for some applications on systems having a large number of mounts. Resolution: Used the new system call which returns information for multiple mounts with one call (rather than one per call). ( SR:8606257150 CR:JAGae21456 ) Path name searching is done twice which causes opendir to be slower than necessary. Resolution: Path name search has been reduced to one from two calls by altering the way the syscalls are made. ( SR:8606254777 CR:JAGae19108 ) When gethostbyname() is called with an IP address as the argument in a multi-threaded environment, the static global variables may be corrupted as they were not protected for threads. Resolution: The global variables are now protected for threads by defining them locally to the function where they are used. ( SR:8606251497 CR:JAGae17562 ) The APIs getresuid(3C) and getresgid(3C) call pstat_getproc(2) syscall to get the real user,real group, effective user, effective group, saved user and saved group ids. But for a 32-bit application running on a 64-bit kernel, there is a possibility of an error with errno set to EOVERFLOW. Due to improper handling of this errno in getresuid(3C) and getresgid(3C), made them to fail. Resolution: getresuid(3C) and getresgid(3C) have been modified to handle the EOVERFLOW in the right fashion. ( SR:8606245321 CR:JAGae11794 ) Application calls any of the APIs getpwnam(3C),getpwuid(3C), getgrgid(3C), or getgrnam(3C) and forks a new process. In the context of the child process, it then closes all open files.When any of the above mentioned APIs are called again in the child context,the API tries to use a cached file descriptor which was opened in the parent context causing undesired results. Resolution: Libc source has been modified so that the APIs getpwnam(3C), getpwuid(3C), getgrgid(3C) and getgrnam(3C) will not use the cached file descriptor in the child context after fork, if it is closed and reopened. PHCO_26870: ( SR:8606239772 CR:JAGae08197 ) Obtaining complete filesystem mount information can be a performance problem for some applications on systems having a large number of mounts. Resolution: Used the new system call which returns information for multiple mounts with one call (rather than one per call). ( SR:8606260114 CR:JAGae24434 ) When getipnodebyname() is called with an IP address as the argument in a multi-threaded environment, the static global variables may be corrupted as they were not protected for threads. Resolution: The global variables are now protected for threads by defining them locally to the function where they are used. ( SR:8606257150 CR:JAGae21456 ) Path name searching is done twice which causes opendir to be slower than necessary. Resolution: Path name search has been reduced to one from two calls by altering the way the syscalls are made. ( SR:8606254777 CR:JAGae19108 ) When gethostbyname() is called with an IP address as the argument in a multi-threaded environment, the static global variables may be corrupted as they were not protected for threads. Resolution: The global variables are now protected for threads by defining them locally to the function where they are used. ( SR:8606251497 CR:JAGae17562 ) The APIs getresuid(3C) and getresgid(3C) call pstat_getproc(2) syscall to get the real user,real group, effective user, effective group, saved user and saved group ids. But for a 32-bit application running on a 64-bit kernel, there is a possibility of an error with errno set to EOVERFLOW. Due to improper handling of this errno in getresuid(3C) and getresgid(3C), made them to fail. Resolution: getresuid(3C) and getresgid(3C) have been modified to handle the EOVERFLOW in the right fashion. ( SR:8606245321 CR:JAGae11794 ) Application calls any of the APIs getpwnam(3C),getpwuid(3C), getgrgid(3C), or getgrnam(3C) and forks a new process. In the context of the child process, it then closes all open files.When any of the above mentioned APIs are called again in the child context,the API tries to use a cached file descriptor which was opened in the parent context causing undesired results. Resolution: Libc source has been modified so that the APIs getpwnam(3C), getpwuid(3C), getgrgid(3C) and getgrnam(3C) will not use the cached file descriptor in the child context after fork, if it is closed and reopened. PHCO_26124: ( SR:8606231691 CR:JAGae00927 ) When the domain name is set to null and when the NSS (Name Service Switch) configuration is "files nis" for password database, then the getpwent(3C) API dumps core with the SIGBUS error. In the switch code, the destructor for the same files backend is called second time. Resolution: The code flow is changed in such a way that the destructor for the same files backend will not be called more than once. ( SR:8606225736 CR:JAGad94809 ) Enhancement providing pre-enablement for a future release of libnsl functionality. The changes in this patch will have no affect on your system . Resolution: Provided a wrapper routine for libnsl. ( SR:8606233401 CR:JAGae02625 ) setlocale(3C) is dereferencing "NULL" pointer and resulting in core dump while checking whether locales can be removed from the cache or not. Resolution: setlocale(3C) will check for NULL pointer before dereferencing a pointer during removal of locales from the cache. PHCO_25452: ( SR:8606228311 CR:JAGad97368 ) Due to duplicate entries problem in the utmpx file, we had more than one entry for the same pts/pty/tty. This leads to a situation wherein only one of the entries in the /etc/utmpx file is correct and signifying the current session of the user and the rest of the entries being incorrect. They correspond to processes that no-longer exist but still are marked as user processes. logname and getlogin would report incorrect username in this case. Resolution: The fix takes into account the current session for a particular terminal. It compares the session id of the calling process and the session id of the ut_pid entry in the /etc/utmpx file to get the correct entry which is the entry corresponding to the current user's session. ( SR:8606199060 CR:JAGad68247 ) The input stdio interfaces acquire a mutex and perform a read. The read may block if there is no data available on the stream. At that time, when fork() is performed by another thread, the registered atfork-handler also tries to acquire the same mutex but as the mutex is held by a thread which is blocked on I/O, it results in an indefinite wait causing a deadlock. Resolution: The locking of the stdio mutex in atfork-handler has been removed. With this fix, deadlock in parent will not occur as reported in the defect. ( SR:8606225942 CR:JAGad95015 ) Improve performance of getdate() and clock() in multi-threaded environments. Resolution: Reduced locking granularity in getdate() and clock() to improve the performance in multi-threaded environments. ( SR:8606225355 CR:JAGad94442 ) Core dump occurred because of a null pointer dereference which happens when 1) Application is built with -z and the environment variable TZ used is not in the file /usr/lib/tztab Or 2) when the application is built with -z and the environment variable TZ is the last entry in the /usr/lib/tztab. Resolution: The pointer is checked for null before de-referencing. PHCO_24942: ( SR:8606212783 CR:JAGad81970 ) res_query() dumps core when called through a large number of threads simultaneously from a single process as the socket descriptor may cross 2048 which is the current limit. Resolution: The code has been modified to handle any number of threads (limited by system resources only) as the limit on socket descriptor is removed. ( SR:8606205180 CR:JAGad74356 ) regexec() does not handle multibyte characters correctly. where the second byte of a multibyte SJIS character is interpreted as stand alone single byte character. Resolution: For matching a pattern containing .* , .+ , regexec traverses the entire length of the string and then backtracks to find out if it can match the remaining part of the pattern.The backtracking logic currently doesn't take the multi-byte scenario into consideration and goes back byte by byte.In the case of a multi-byte character with a valid character as a second byte, a match is found for the second byte even though it is not a stand-alone character and just forms part of a multi-byte character. Now the code has been changed to take care of multi-byte back tracking. ( SR:8606214105 CR:JAGad83296 ) memchr() returns NULL unexpectedly in the PA 2.0 Narrow mode Resolution: The above defect is because the higher order 32 bits were not cleared. Now the instruction is added to clear the higher order 32 bits in PA2.0 Narrow mode. ( SR:8606203226 CR:JAGad72400 ) There was a missed condition wherein a file stream which has been opened in write-only mode, an immediate fread on the stream failed but if the fread() followed after a fwrite() didn't report an error. Resolution: Changes have been made to code in the fread() call.Check was being made on the basis of _cnt field of the file stream and the routine that sets the error (_filbuf()) was then being called. The pathflow is different when the _cnt field is greater than 0 (which is taken when fwrite() updates the file stream and updates the _cnt field). _cnt greater than 0 denotes that there are bytes in the look-ahead buffer. In case the file stream has been fflushed,the _cnt field is set to 8192 (_DBUFSZ) when the stream is opened in read-only mode. These cases, when the _cnt is greater than 0 had not been taken into consideration from the write-only mode of operation point of view. Introduced a check to handle this. ( SR:8606213123 CR:JAGad82310 ) Application using the directory (3C) API's in multithreaded environment got into mutex contention problem, which resulted in 100% usage of the CPU resource time. Resolution: The application was creating more than 1000 threads and also openning ~50000 directories. Since there are 50000 instances opendir(), there will be 50000 nodes in the directory mutex linked list. Under this circumstance when multiple threads at the same time tries to open/close directories, in an average there will be a traversal of ~25000 nodes, during which the global mutex will be locked. Fix is to use 2 linked lists Inuse and Free in place of one list. This eliminates lot of search time and mutex contention. The 2 APIs opendir() and closedir() modified to incorporate the new design, which provides direct access to the required mutex. ( SR:8606204965 CR:JAGad74141 ) The existing PA C++ binaries performance can be improved significantly by providing the SBA support for small block allocation. Resolution: mallopt(3C) is enhanced to provide a new command M_SBA_ON which will be used by libCsup, C++ initialization library. The libCsup will call mallopt(M_SBA_ON, 1) in its initialization routine, as a result the mallopt configures the SBA with the predefined default values. ( SR:8606211883 CR:JAGad81071 ) delmntent libc routine deletes the entire contents if mntent structure obtained from the call to getmntent was passed to delmntent. Resolution: The defect is due to the returning of same global buffer by getmntent call to an application and the same global buffer being used in the delmntent libc call. The code has been fixed to address the problem. ( SR:8606202970 CR:JAGad72144 ) When putw() fails, it is supposed to set the error flag for the file stream, set the errno describing the error occurred and return EOF. Only the errno was being set but error flag of the file stream wasn't being updated due to which EOF was not being returned. Resolution: Change has been made to flsbuf.c file in the _wrtchk() routine wherein, in case no write permissions are found for the file stream, the errno is set and EOF returned but the file stream's error flag wasn't being set. On return from this call, file's error flag was being checked which was not being set earlier and hence, it was being considered as success. ( SR:8606206070 CR:JAGad75245 ) mktime takes the timezone specification from /usr/lib/tztab file. Incase the application does a rapid switch between 2 invalid time zones then for each switch the tztab file is accessed and searched for the required time zone. Hence for each switch the file is read completely. This degrades the performance of mktime. Resolution: The /usr/lib/tztab file is cached in memory local to the process,the first time mktime is called,and each subsequent call to mktime makes use of this cached data. This approach reduces the number of disk read operations. ( SR:8606183079 CR:JAGad52295 ) freeing of an unallocated memory was done in update_mnttab routine, which may result in coredump of an application. Resolution: The problem was fixed by freeing only the memory which was allocated through libc malloc family calls. ( SR:8606215963 CR:JAGad85135 ) When cold installing 11.11, the postinstall script for CORE-SHLIBS replaces the PA1.0 /usr/lib/libc.2 with a with a PA2.0 version if needed. When installing PHCO_23427 (or one of the superseded patches PHCO_23772 and PHCO_23093) on a PA2.0 system, this PA2.0 file gets replaced by a PA1.0 version. Resolution: Control scripts have been provided along with the patch for placing the right version of libc library under /usr/lib directory. PHCO_24400: ( SR:8606204553 CR:JAGad73735 ) getwc() unable to handle Chinese codeset GB18030 Resolution: getwc() depends on mbtopc() to convert file code to process code.When Multibyte character is split across the buffer mbtopc() detects this and returns number of more bytes required to make this vaild character. The current getwc() function works on the assumption that mbtopc() always returns the number of more bytes required in case of a multibyte split.But in case of gb18030 mbtopc() method cannot tell the caller its a 2 or 4 byte, because both two and four byte characters begin with the same byte range (x81 - xFE). Now the routine mbtopc() in gb18030 method returns MB_CUR_MAX in case the multibyte character is split across the buffer.Now to fix this getwc() is changed not to depend on the return value from mbtopc() in case of the multibye split. ( SR:8606201456 CR:JAGad70632 ) IPv6 functionality should be provided in libc. Resolution: The source code for networking APIs in libc have been modified to effect IPv6 changes. New APIs included : getaddrinfo(), getnameinfo(), freeaddrinfo(), gai_strerror(), getipnodebyname(), getipnodebyaddr(), rcmd_af(), rresvport_af(), rexec_af() The last three APIs are provided to enable IPv6 in rcommands. rlogin and remsh Applications call rcmd_af() and rresvport_af() APIs and rexec calls rexec_af() API. IP address to hostname resolution APIs: The getaddrinfo(), getipnodebyname() APIs are provided for name to address resolution. The getnameinfo() and getipnodebyaddr() APIs are provided for address to name resolution. They work for both IPv4 and IPv6 hostnames and addresses. freeaddrinfo() is used to free the linked list created by getaddrinfo(). gai_strerror() is used to print error messages corresponding to error values from getaddrinfo(). ( SR:8606188513 CR:JAGad57721 ) fstyp command calls statvfsdev on VxFS version 4 disk layout returns "unknown_fstyp". It fails on accessing initial inode list extents block address which exceeds 32 bit addressing. lseek64 should be used instead of lseek in __vx_fs_lseek. Resolution: Now the call to lseek is replaced with lseek64 by using a compilation flag _FILE_OFFSET_BITS=64 in the makefile. PHCO_23427: ( SR:8606177629 CR:JAGad46861 ) When the application is linked with libpthreads ptsname() function may corrupt heap Resolution: The cause of this problem is instead of passing the sizeof bytes allocated by malloc to the GET_TSS() function, the sizeof the character pointer returned by malloc is passed as an argument. So,it is always taking sizeof the character pointer which is less than the number of bytes allocated by malloc. ptsname() is modified to pass the correct argument ( SR:8606196622 CR:JAGad65825 ) The getXXent call and endXXent functions call shl_unload() function to unload the shared backend library when the number of references to the backend instance structure is zero. However, the library call shl_unload() on PA32 machine unloads the shared library regardless of whether there are other references to it through other load invocations. This causes the subsequent shl_unload call fail with signal 11. Resolution: Removed the shl_unload call for PA32 architecture in the SO_per_src_delete function. ( SR:8606179946 CR:JAGad49168 ) Initialized TLS support in libc for 64 bit non threaded applications. Resolution: The initialization routine of Libc has changed to support initialized TLS variables in a PA64 non threaded applications. Both the archived and shared version of the libraries have this enhancement. To get the complete functionality of ITLS (Initialized thread local storage) the following patches has to be installed. PHSS_23441- linker core PHSS_23794 - linker ISU PHCO_23846 - libpthread PHSS_23953 - Fortran compiler Currently this feature is available with Fortran compiler only.No changes are required to be done in libc when this feature is made available for any other compilers. ( SR:8606239637 CR:JAGab20870 ) When the variable TZ is not set in the environment, in HP-UX it defaults to EST5EDT which is the east coast time in US. This poses problem in the environment of the processes that (a) are started by init(1m) (b) clear their environment (e.g. login (1), sendmail(1m) ) The hard coded value is inappropriate for any timezone other than east coast of US and the difference is difficult to track for countries like Australia which frequently update their daylight timing rules Resolution: When the environment variable TZ is not set, tzset() checks the default file /etc/default/tz for the timezone value and sets timezone values based on that. The file /etc/default/tz contains the timezone value set by tzset() when the environment variable TZ is not set. The format for the file is same as TZ format without the prefix "TZ=". Please check environ(5) for TZ format. 1) if the environment variable TZ is present, it takes precedence. 2) if TZ is not present then the value contained in /etc/default/tz is used for the default. 3) if /etc/default/tz is not set then the default value is equivalent to EST5EDT (Eastern Standard Time) of US. (Install the Patch PHCO_24396 to get the sample /etc/default/tz file. Please read "Special Installation Instructions" field for more information on PHCO_24396 patch) ( SR:8606172344 CR:JAGad41604 ) When the APIs getprpwnam(), getgrnam(), getnetbyname(), and getservbyname() are configured with the /etc/nsswitch.conf file to search sources that do not support these calls, the Name Server Switch engine code unloads the sources and returns NSS_NOTFOUND. The source "nis" doesn't support the trusted system call getprpwnam(). The source "dns" is only valid for the "hosts" database. Thus, subsequent API getXXXbyYYY calls that try to search sources that have been unloaded end up accessing invalid locations, resulting in a SIGSEGV core dump. Resolution: If a source doesn't support an API getXXXbyYYY call, don't unload the source. Just have the Name Server Switch engine code return NSS_UNAVAIL. ( SR:8606194571 CR:JAGad63779 ) Insufficient handling of locale specific representation of time in getdate(3C) Resolution: getdate() changed to be inline with UNIX 98 specifications. ( SR:8606165366 CR:JAGad34660 ) mallinfo() doesn't give correct memory statistics if the application is multithreaded and uses multiple arenas. The problem was introduced during multi arena enhancement. The way mallinfo() designed works fine only for single arena, but the problem starts when there are 2 or more arenas and there is a overlapping brk value. When multiple threads call malloc(3C) to allocate space, each will be assigned an arena. Each arena will maintain the start and end point of that arena. The arena_start represents the starting heap address for this thread and the end_arena represents the ending address. Assume 2 threads are say THREAD1 and THREAD2 running in parallel. THREAD1 calls malloc(), malloc stores the the arena_start1 (current brk value say 0x1000 ) and extends the brk value to predefined size and sets the end_arena1(0x4000), similarly THREAD2(arena_start 0x4000, arena_end 0x8000). If THREAD1 again calls malloc() and there is no pre-allocated space in the arena, the brk value is increased and arena_end will be set( 0x12000). The mallinfo() will collect the size by visiting each arena starting from arena_start till arena_end of that arena. In the above case arena_start and arena_end of THREAD1 is 0x1000 and 0x12000 respectively, for THREAD2 arena_start is 0x4000 and arena_end is 0x8000 respectively. While counting the size, arena for THREAD2 will be counted 2 times, once with arena1 and once with arena2. Hence the problem. In single arena implementation this problem will not be revealed. Double counting is happening because we will modify the dummy header when lastbrk != curbrk. The dummy header which had SIZE=0 and USED set, will be set with the difference of curbrk and lastbrk. If the lastbrk of one thread is not equal to the curbrk, the possibility is that either user application called brk/sbrk or some other thread expanded the brk value. If the curbrk value is changed from some other thread then the other thread treats this as the user allocation and the dummy header is modified appropriately and fixes the arenaend for this thread. The problem will be there if there is a overlap between the brk values of the different arenas. So in the current implementation USER_ID is used when O The application directly calls brk/sbrk O The other arena calls brk/sbrk The problem is because of setting USER_ID when the other arena calls brk/sbrk. Resolution: The resolution is basically to avoid the use of USER_ID when the other arena calls brk/sbrk. A new memory block identifier ARENA_ID is defined in malloc.c as The ARENA_ID is used to mark that the memory block is used and it is used by some arena. The used memory block will be marked with ARENA_ID under the circumstance mentioned below. O When a block of memory is used by some other arena and the last brk value maintained in the that arena is not equal to the _curbrk. While counting memory usage statistics in mallinfo(), the memory block with ARENA_ID as the id we will skip because it is used by some other arena and will be taken into account under that arena. ( SR:8606186527 CR:JAGad55731 ) The defect was due to blocking the signals after locking the malloc mutexes in the case of multi threaded malloc. When malloc/calloc/valloc/realloc is called in signal handler and also the main thread of execution and there are frequent signals to application. The application becoming busy in locking and unlocking the malloc mutexes resulting into application hang situation Resolution: Signals blocking is done before locking the mutexes. Which avoids the too many mutex locks and unlocks. ( SR:8606185046 CR:JAGad54248 ) The defect was due to coalescing when the allocation is switched from sbrk to mmap at 4th quadrant. The coalescing was resulting to allocating the blocks of memory near the stack, which leads to data corruption. Resolution: Resolution is to avoid coalescing near the quadrant 4 boundary. PHCO_23772: ( SR:8606185984 CR:JAGad55189 ) When a C application uses C++ plugins and calls pthread/cma calls in static constructor/destructor, it was leading to destructor being called twice. This was happening because the C++ runtime initialization routine was invoked at a point when the pthread library initialization would not have been complete . During this time, constructor was invoking pthread calls . This might have lead to destruction of the shared data (static/global) in the libCsup. Resolution: Changes are made to libc so that C++ runtime initialization routine is invoked only after the completion of pthread library initialization. PHCO_23093: ( SR:8606162328 CR:JAGad31644 ) Reading a single wide character with %lc or %lC format string by fwscanf is not supposed to add a terminating null character. This is specifically mentioned in the man page. But fwscanf code with %lc format string was adding a terminating null character to the second location of the argument. Resolution: Code was changed to consider the "c" case for not adding the terminating null character at the second location of the argument to fwscanf. ( SR:8606162140 CR:JAGad31456 ) regcomp(3C) fails to detect an extended regular expression match in the input data on HP-UX 11.00 using libc patch PHCO_20765 (or PHCO_22076) but works on HP-UX 10.20 w/ PHCO_20441 Resolution: Defect is fixed by adding an "alternate" flag which is set when there is an alternate('|') option in the regular expression. ( SR:8606170481 CR:JAGad39745 ) sigwait() does not work as cancellation point if the thread is cancelled after it enters __sigwait_sys(). When canceling a thread that is blocked on sigwait() by means of pthread_cancel(), the blocked sigwait() returns with EINTR rather than checking the cancellation point before it returns and terminate the thread. Resolution: When the thread is cancelled, then __sigwait_sys returns error EINTR and does not set errno. In sigwait we were checking for errno and setting the cancellation point. Now that has been modified to check for return value. ( SR:8606172179 CR:JAGad41440 ) User cannot use C++ runtime library on 32 bit application without either using a C++ main program or explicitly invoke the C++ runtime library's initialization routine, _main, from the C ( or Fortran ) main program. Resolution: The definition of the __main_ptr variable is done in libc_init routine. The same variable is defined as a global variable in libcsup, which will point to the C++ runtime library initialization routine, _main. Thus, when libcsup is linked into the program, the variable _main_ptr will point to _main; otherwise, it will contain 0. Now, we have the following three scenarios when the program is linked with libcsup. 1. Multithreaded Application linked with libc : In this case, C++ runtime initialization routine _main (of libcsup) is invoked through __main_ptr in libc_init.c routine. 2. Single Threaded Application linked with libc : In this case, C++ runtime initialization routine _main (of libcsup) is invoked through __main_ptr in libc _start.c routine. 3. Multithreaded Application linked with libcma : In this case, C++ runtime initialization routine _main (of libcsup) is invoked through __main_ptr in libc_init routine and control won't come to libc's _start.c routine as libcma's startup routine is called. ( SR:8606175166 CR:JAGad44410 ) gettimeofday is very slow for certain vendors who use it for time stamping because it calls a heavy weight system call to get the current time of the day. Resolution: A new API hrtime_t gethrtime(void) has been added to libc. This API uses fast light weight system call to get the nano seconds from certain time. It does not give you the current time of day. hrtime_t is a signed 64 bit number. This API will only be available if the application is being compiled in -Ae mode because 64 bit integer number is not available in -Aa mode. ( SR:8606164457 CR:JAGad33756 ) Global symbols in libc can conflict with one in program causing SIGBUS. In ptsname.c we have defined two global symbols alpha and range_spec. They are symbols which are used only by libc. They should not be visible to customers. They can conflict with the user defined global symbols. Resolution: alpha is changed to __alpha and range_spec is modified as __range_spec, so that they follow libc conventions. ( SR:8606102984 CR:JAGab69119 ) On HP-UX if a nonthreaded application links to a thread-safed library the link will fail due to unresolved symbols.To resolve these symbols, it is necessary to link the nonthreaded application to the threads library libpthread.But linking to that library makes the application threaded even if it creates no threads. Providing POSIX 1c thread "stubs" in HP-UX C language library have two direct effects for nonthreaded applications. a) POSIX 1c threads symbols are resolved if a nonthreaded application links to a thread-safed library b)We avoid the overhead of a real threads library -- especially the overhead associated with mutexes when the nonthreaded application uses thread stubs rather than real threads library procedures. Resolution: Stubs are provided for all pthread calls only in SHARED LIBC FLAVORS of the HP-UX C Library. These stubs do not have any functionality, these are dummy functions returning zero except pthread_getspecific() family of APIs which has full functionality implemented in the stubs. Full functionality is provided in the stub for the following pthread calls * pthread_key_create() * pthread_getspecific() * pthread_setspecific() * pthread_key_delete() * pthread_exit() Stub call to pthread_self() returns 1 Stub call to pthread_equal(arg1, arg2) will return (arg1 == arg2) Stub call to pthread_create() and pthread_attr_init() returns ENOSYS. All other stub calls returns zero. There are two special interfaces provided for checking whether an application is linked to pthread library or not. a) __is_threadlib_linked() returns 1 for an applications linked to pthread library otherwise returns zero. b) __get_ismt() returns 1 for applications linked with libcma returns 2 for applications linked with libpthread otherwise returns 0 Risks: ------ An application may inadvertently pick up the stubs when it intended to use the real pthreads APIs, or it may pick up the stubs when it needs cma APIs or stubs. These are all link order problems. An application that needs cma behavior must link to libcma (or the cma stubs library) and must do so in a supported link order, i.e. the link line should be shared only and should not contain "-lc" before -lcma. So long as this condition is met, the correct cma functions will be referenced. Similarly, a multithreaded application that needs pthread threads library behavior must link to libpthread and must do so in a supported link order, and only use shared libc and libpthread. eg : An applications wants to use pthread stubs then the link order should be $ cc test.c -lc -lpthread An applications wants to use pthread library then the link order should be $ cc test.c -lpthread -lc Enhancement: No (superseded patches contained enhancements) PHCO_27740: This product update contains a minor enhancement required to enable the HP-UX Device IDs feature. Additional enhancements were delivered in a patch this one has superseded. Please review the Defect Description text for more information. SR: 8606102984 8606162140 8606162328 8606164457 8606165366 8606170481 8606172179 8606172344 8606175166 8606177629 8606179946 8606183079 8606185046 8606185984 8606186527 8606188513 8606194571 8606196622 8606199060 8606201456 8606202970 8606203226 8606204553 8606204965 8606205180 8606206070 8606211883 8606212783 8606213123 8606214105 8606215963 8606225355 8606225736 8606225942 8606228311 8606231691 8606233401 8606239637 8606239772 8606245321 8606251497 8606254777 8606257150 8606258699 8606260114 8606261751 8606262841 8606264319 8606265515 8606271895 8606282083 8606288623 8606293042 8606294826 8606300530 8606302212 8606303142 8606303454 8606307452 8606308071 8606310639 8606311197 8606315457 8606316926 8606319537 8606321285 8606321633 8606325440 8606333346 8606334316 8606336221 8606338169 8606340796 8606345127 8606346486 8606348669 8606350122 8606356362 8606366307 Patch Files: OS-Core.C-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libc.a /usr/lib/libcres.a /usr/lib/unix95.o /usr/lib/unix98.o OS-Core.C-MIN-64ALIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/pa20_64/libc.a /usr/lib/pa20_64/libcres.a /usr/lib/pa20_64/unix95.o /usr/lib/pa20_64/unix98.o OS-Core.CORE-64SLIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/pa20_64/libc.2 OS-Core.CORE-SHLIBS,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libc.2 /usr/lib/pa11_32/libc.2 /usr/lib/pa20_32/libc.2 ProgSupport.PROG-AUX,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libp/libc.a ProgSupport.PROG-AX-64ALIB,fr=B.11.11, fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/pa20_64/libp/libc.a ProgSupport.PROG-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libpicc.a OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/newconfig/etc/default/nlspath OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/newconfig/etc/default/nlspath what(1) Output: OS-Core.C-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libc.a: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:06:50 $ /usr/lib/libcres.a: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:28:00 $ /usr/lib/unix95.o: None /usr/lib/unix98.o: None OS-Core.C-MIN-64ALIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/pa20_64/libc.a: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:14:14 $ /usr/lib/pa20_64/libcres.a: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:28:10 $ /usr/lib/pa20_64/unix95.o: None /usr/lib/pa20_64/unix98.o: None OS-Core.CORE-64SLIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/pa20_64/libc.2: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:17:28 $ OS-Core.CORE-SHLIBS,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libc.2: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:10:07 $ /usr/lib/pa11_32/libc.2: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:10:07 $ /usr/lib/pa20_32/libc.2: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:20:52 $ ProgSupport.PROG-AUX,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libp/libc.a: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:24:07 $ ProgSupport.PROG-AX-64ALIB,fr=B.11.11, fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/pa20_64/libp/libc.a: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:27:20 $ ProgSupport.PROG-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/lib/libpicc.a: $ PATCH_11.11/PHCO_31061 Jul 14 2004 03:10:53 $ OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/newconfig/etc/default/nlspath: None OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/newconfig/etc/default/nlspath: None cksum(1) Output: OS-Core.C-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 416712156 2540292 /usr/lib/libc.a 4282915927 67556 /usr/lib/libcres.a 3100164015 868 /usr/lib/unix95.o 2064853409 868 /usr/lib/unix98.o OS-Core.C-MIN-64ALIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 2003718217 4212556 /usr/lib/pa20_64/libc.a 2548644025 67206 /usr/lib/pa20_64/libcres.a 247891611 1632 /usr/lib/pa20_64/unix95.o 1654411844 1632 /usr/lib/pa20_64/unix98.o OS-Core.CORE-64SLIB,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 1309116904 1865000 /usr/lib/pa20_64/libc.2 OS-Core.CORE-SHLIBS,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 400980527 1859584 /usr/lib/libc.2 400980527 1859584 /usr/lib/pa11_32/libc.2 1837899475 1814528 /usr/lib/pa20_32/libc.2 ProgSupport.PROG-AUX,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 3465095175 2807948 /usr/lib/libp/libc.a ProgSupport.PROG-AX-64ALIB,fr=B.11.11, fa=HP-UX_B.11.11_32/64,v=HP: 2231597919 4556058 /usr/lib/pa20_64/libp/libc.a ProgSupport.PROG-MIN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 3481049132 2700224 /usr/lib/libpicc.a OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 2396073988 626 /usr/newconfig/etc/default/nlspath OS-Core.SYS-ADMIN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 2396073988 626 /usr/newconfig/etc/default/nlspath Patch Conflicts: None Patch Dependencies: s700: 11.11: PHCO_24402 s800: 11.11: PHCO_24402 Hardware Dependencies: None Other Dependencies: PHCO_29287: ( SR:8606308071 CR:JAGae71107 ) This patch depends on the libc manpage patch PHCO_29328. The APIs get*info(), getipnodebyXX() and gethostbyXX() contain some behavioral change which is documented in the corresponding manpages in the patch PHCO_29328. PHCO_28427: ( SR:8606293042 CR:JAGae56792 ) The behavior of programs with the following characteristics may change after this patch is installed: * setuid program owned by root * executed by others * invokes catopen(3C) * depends on the NLSPATH environment variable. The configuration file, "/etc/default/nlspath" is introduced to provide the solution. The man page patch, PHCO_28894, has been delivered for this fix. The man page patch must be installed to get details about the new configuration file, "/etc/default/nlspath", and the changed behavior of catopen(3C). See nlspath(4) and catopen(3C). Note for CDE: Few of the CDE products,which are owned by root and depending on environment variable NLSPATH are changed not to depend on environment variable. If customer is using CDE products install following patches for CDE products after installing the libc patch. PHSS_26492 - 11.11 CDE Base Periodic Patch PHSS_26493 - 11.11 CDE Applications Periodic Patch PHSS_26494 - 11.11 CDE DevKit Periodic Patch PHSS_26498 - 11.11 XClients Periodic Patch PHCO_26870: ( SR:8606257150 CR:JAGae21456 ) The opendir(3C) performance benefit requires patch PHKL_26239. Both PHCO_26870 and PHKL_26239 patches are required to ensure full performance benefit. Installing any of these 2 patches alone will not cause any adverse effects to the system. ( SR:8606239772 CR:JAGae08197 ) The following patches are required to ensure full performance benefit. PHKL_26467, PHKL_26239, PHCO_26242, PHCO_27120, PHCO_26331, PHCO_26332, PHCO_26333 and PHCO_26334. Any of these patches may be installed independently with no adverse effects to the system. Supersedes: PHCO_30530 PHCO_30030 PHCO_29955 PHCO_29495 PHCO_29287 PHCO_29029 PHCO_28427 PHCO_27910 PHCO_27740 PHCO_27434 PHCO_26870 PHCO_26124 PHCO_25452 PHCO_24942 PHCO_24400 PHCO_23772 PHCO_23427 PHCO_23093 Equivalent Patches: None Patch Package Size: 7130 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHCO_31061 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHCO_31061.depot By default swinstall will archive the original software in /var/adm/sw/save/PHCO_31061. If you do not wish to retain a copy of the original software, include the patch_save_files option in the swinstall command above: -x patch_save_files=false WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHCO_31061.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHCO_31061.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHCO_31061.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: If you use HP Process Resource Manager (PRM) version 1.08 or 1.08.2, /opt/prm/bin/prm3d may core dump at startup if this patch is loaded and PRM is running. The following message displays: Assertion failed:!isLocked_,filedaemon.cc, line232 To solve the problem, load PRM C.02.00 or later from the September 2001 (or later) Application Release (AR) media. If you do not experience the core dump at startup, you will probably not encounter problems. If libc patches are installed without rebooting, applications currently running which are linked shared against libc will still continue using the former version of libc. If this presents a problem to any applications, you should reboot. PHCO_23427: JAGab20870 The tzset() behavior have been changed to take default TZ values from the file/etc/default/tz. A sample file is released as patch PHCO_24396. The /etc/default/tz included in the patch contains the earlier default value ie., EST5EDT. So unless the user explicitly changes the value contained in the file the tzset changes are transparent to the user. The file /etc/default/tz contains the timezone value set by tzset() when the environment variable TZ is not set. The format for the file is same as TZ format without the prefix "TZ=". Please check environ(5) for TZ format. The order of TZ setting is as follows. 1) if the environment variable TZ is present, it takes the precedence. 2) if TZ is not present, then the value contained in /etc/default/tz is used for default. 3) if /etc/default/tz is not set, then the default value is equivalent to EST5EDT (Eastern Standard Time) of US. Risks : If the customer already has made some customizations in /etc/default/tz, installing PHCO_24396 will overwrite the file.