Patch Name: PHSS_17067 Patch Description: s700_800 10.x Cumulative patch to DDE v4.03 (DDE 4.03.P1) Creation Date: 98/12/02 Post Date: 99/01/22 Hardware Platforms - OS Releases: s700: 10.10 10.20 s800: 10.10 10.20 Products: DDE v4.03 Filesets: DDE.DDE Automatic Reboot?: No Status: General Release Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHSS_17067 Symptoms: PHSS_17067: The following symptoms correspond to the descriptions in the defect descriptions field for PHSS_17067: Note: some of these lines were wrapped to fit into a (required) 60 column format. 1) "Unable to demangle name" message from aCC generated file. 2) Printing range of integers fails with pascal manager 3) Better error message for (unsupported) pointer assignment 4) dde hangs when passing in "arg " 5) Pascal Languge mgr call command cannot pass user var by ref use -lang c 6) float to char conversion is flakey 7) Cannot correctly make assignment of FLOATS when NLS is inabled 8) DDE cannot print a class in main if class debug info in shared lib. 9) DDE 4.21 does not display full traceback from aCC core, exception handl 10) Single Step interupted by signal.. 11) DDE "call" command gives wrong result for float and double return values 12) DDE gets SIGSEGV with aCC target compiled with full pathnames 13) DDE: syntax error on nested template: bre List >::copy [] Defect Description: PHSS_17067: The following defect descriptions are for PHSS_17067: Note: some of these lines were wrapped to fit into a (required) 60 column format. This will make some message text look different from how it appears to the user. 1) Unable to demangle name message from aCC generated file. Problem : DDE is printing the following message "unable to demangle function" in the case when it is not able to do that. It is not possible to determine which function name is giving the problem since the string(failed to be demangled) is not printed by DDE. 2) DDE gets SIGSEGV with aCC target compiled with full pathnames. When debugging a certain file, DDE complains about an internal error and also gets a SIGSEGV. The C++ team claims the file has bad debug info. Even so, DDE should not act so poorly. DDE may complain about bad input or produce bad output as a result, but DDE may not simply fault. Apparently, any C++ program, compiled using fully qualified source paths, with aCC version A.03.10 will cause DDE to exhibit this problem. For example: The source was compiled like so: aCC +DAportable -g0 -c `pwd`/main.cc -o main.o aCC +DAportable -g0 -o testbin main.o .../home/aCCbug>dde -ui line (Warning) Commands dealing with key definitions are not supported in line mode. dde> version dde, version 4.21.P2 User interface manager ui_line: Line-Mode UI, version 4.21.P2 dde> debug testbin Executing image in process 28685: ".../home/ aCCbug/testbin". ?(dde) Unexpected error in sym package. (Warning) Pending commands discarded. ?(dde) Unexpected error occurred: SIGSEGV (invalid memory access) (Warning) Continuing despite the error... Source File: .../home/aCCbug/main.cc 5 B > cout << "main" << endl; dde> 3)Printing range of integers fails with pascal manager(set range). If you're using the pascal language managers, the command "print [1..10]" should, print [1,2,3,4,5,6,7,8,9,10] instead, it often spits out just [1]. The latest version of dde using the 4.21 configuration often spits out warning messages as well. .../home/aCCbug>dde -ui line (Warning) Commands dealing with key definitions are not supported in line mode. dde> version dde, version 4.03 User interface manager ui_line: Line-Mode UI, version 4.03 dde>debug t05 Executing image in process 14483: "/home/t05". Break at: \\test\169 Source File: /home/t05.p 169 B > init_data; dde> print [1..10] [1] dde> 4) DDE cannot print a class in main if class debug info in shared lib. wrong (missing) output of symbols: example: pri anyInstance' -> '(record) 5) Pascal language Manager call command cannot pass variables by value. DDE does not print the correct value for programs in pascal when a function with parameters passed by value is called from command line. For Example, If the function int_val has the prototype, function int_val(i1:integer):integer and if you enter "print int_val(i1)" from command line (say i1=1997) then DDE does not print the correct value which is 1997. It does so if i1 is passed by reference. The work around is to use the lang -c option which breaks the DDE concept of language independent targets. The executable is built with pc and the problems have been experienced on both 10.20 and 11.00. 6)DDE cannot correctly make assignment of FLOATS when NLS is inabled The problem is that fractional part of floating point values get dropped when international locals are enabled which use a character other than "." (period) as the radix seperation character. The cause is a bug in DDE, in that it didn't take into account the affect that locale changes have on it's internal value conversion operations. It is a side effect of how locales are implemented. Specifically, sscanf changes it numeric behavior in international contexts that define the radix character to be a character other than "." (period). In the case of this bug this behavior by sscanf is not desired, but also not controllable on a call by call basis. Locale control affects all printf and scanf invocations globally. 7) DDE: syntax error on nested template: bre List >::copy If template argument is of type 'template_name' DDE can't set breakpoint at a Single Class Template Member Function Instance. For Example, If we have the following declaration, template class Stuff {...}; template class List { : : public: insert(T) {...} : : }; and we try setting break points as follows from command line. dde> bre List >::insert Output: List ^syntax error in C expression Location "List " not found in current environment. 8) Better error message for (unsupported) pointer assignment dde gives a misleading error message , for unsupported pointer assignment in FORTRAN 90. compiling the following piece of code using f90 compiler; real, pointer :: a real, target :: b real, target :: c a => b b = 1.0 c = 2.0 end Now loading the executable and giving the following set command dde> set a=>c dde gives a message: ?(dde/lang_ftn) Incompatible types for assignment. which is not correct in this context. 9) float to char conversion is flakey DDE behaves inconsistently for float to char type casting.Supposing that we have a variable "var" in a program and has been defined as a float type; Now trying to print "var" with char type casting, dde gives differnt values from one run to another. dde > print (char)var '\310' #this output is an example after restart and go for the executable dde > restart dde > go and again trying to print "var" with char type casting dde > print (char)var '4' #this output is an example. Here we should be getting the same value for "var" rather than different values , as the case is when we print it.This suggests that the final char value for the variable "var" is non-deterministic. 10) dde hangs when passing in "arg " dde is hanging while trying to load any executable with command line arguments within quotes. The problem is here shown with small example code. #include main(int argc, char **argv) { printf("hello there\n"); printf("prog name %s\n",*argv); printf("1st argument %s\n",argv[1]); } Compile the code. cc -Aa -g test.c start the debugger. dde File pull down menu to load executable. In load rerun/menu window ; specify "hello there" as argument , dde loops in loading the executable forever and there is no way to come out of it except using interrupt. 11) DDE 4.21 does not display full traceback from aCC core, exception handl There is a problem tracing C++ Exception handler present even in the latest dde version A.04.21.P1 provided to us in advance to test another traceback problem. Again gdb can show the handler's trace. Below is the details showing the problem: $ cat sample.cc #include #include double devide(double d1, double d2) { if (d2 == 0.0) throw "devzero"; return d1 / d2; } void func_cause_exception(void) { try { double ret = devide(1.0, 0.0); cout << "ret = " << ret << "\n"; } catch (const char *type) { cerr << "Exception:" << type << "\n"; abort(); } } int main(int argc, char **argv) { func_cause_exception(); } $ aCC -g -o sample sample.cc /usr/ccs/bin/ld: (Warning) At least one PA 2.0 object file (sample.o) was detected. The linked output may not run on a PA 1.x system. $ ./sample Exception:devzero ABORT instruction (core dumped) bash@malpas:/home/hiro/tmp <1062> dde -ui line core sample Target process died because of: SIGABRT - IOT instruction. Executing image in process 24032: "/home/hiro/tmp/sample". Stopped at: \\kill (C00F25B8) dde> tb `main(6): Stopped at: \\kill (C00F25B8) `main(5): Called from: \\_raise (C0092F60) `main(4): Called from: \\abort (C006A288) `main(3): Called from: abort (hpux_export stub)+0018 (C006A0A8) `main(2): Called from: \\sample\func_cause_exception\ub.2\24 (00003504) `main: Called from: `va(0) (00000000) dde> quit $ gdb sample core Wildebeest is free software and you are welcome to distribute copies of it under certain conditions; type "show copying" to see the conditions. There is absolutely no warranty for Wildebeest; type "show warranty" for details. Hewlett-Packard Wildebeest 0.75.02 (based on GDB 4.16) (built for PA-RISC 1.1 or 2.0(narrow), HP-UX 11.00) Copyright 1996, 1997 Free Software Foundation, Inc... Core was generated by `sample'. Program terminated with signal 6, Aborted. warning: The shared libraries were not privately mapped; setting a breakpoint in a shared library will not work until you rerun the program.Reading symbols from ./sample. ..done. Reading symbols from /usr/lib/libstd.2...done. Reading symbols from /usr/lib/libstream.2...done. Reading symbols from /usr/lib/libCsup.2...done. Reading symbols from /usr/lib/libm.2...done. Reading symbols from /usr/lib/libcl.2...done. #0 0xc00f25b8 in _kill () from /usr/lib/libc.2 #0 0xc00f25b8 in _kill () from /usr/lib/libc.2 (gdb) where #0 0xc00f25b8 in _kill () from /usr/lib/libc.2 #1 0xc0092f68 in _raise () from /usr/lib/libc.2 #2 0xc006a290 in abort () from /usr/lib/libc.2 #3 0x350c in func_cause_exception () at sample.cc:24 #4 0x33e4 in devide (d1=1, d2=0) at sample.cc:8 #5 0x3468 in func_cause_exception () at sample.cc:18 #6 0x3588 in main (argc=1, argv=0x680e73ac) at (gdb) quit 12) Single Step interupted by signal.. When hitting a breakpoint in a function. the step command may leave you in cma code if a signal is recieve by the process while the step command is being done. Set a breakpoint on a function. Start the debugger ( go) The program will stop on the right position. If you do a list stack, the stack is fine. If you do now a STEP, you go inside that function to the DCE call cma__sig_async. Now to return back to the user code, you have to to twice go -ret. customer who has reported this is Nokia Mobile Phones... Ted is aware of the problem. Has been duplicated with in inhouse NMP environment.. 13) DDE "call" command gives wrong result for float and double return values DDE call command returns incorrect results with functions whose arguments are of type float/double if the called functions reside in a shared library. Example: dde>debug dcall dde>prop lib *.sl dde>go -unt 15 dde>print ret_farg (9.1) 0.0 SR: 1653240366 5003370676 1653238931 1653278069 1653271973 5003349894 1653268995 1653243709 Patch Files: /opt/langtools/bin/dde.bin /opt/langtools/dde/mgrs/lang_asm_pa /opt/langtools/dde/mgrs/lang_c /opt/langtools/dde/mgrs/lang_c++ /opt/langtools/dde/mgrs/lang_ftn /opt/langtools/dde/mgrs/lang_pas_apollo /opt/langtools/dde/mgrs/lang_pas_hp /opt/langtools/dde/mgrs/obj_som_som /opt/langtools/dde/mgrs/tgt_hpux_pa /opt/langtools/dde/lib/nls/msg/C/lang_ftn.cat /opt/langtools/dde/lib/nls/msg/C/obj_mgr.cat /opt/langtools/dde/lib/nls/msg/C/dbgk_hpux_pa.cat what(1) Output: /opt/langtools/bin/dde.bin: HP92453-02A.10.00 HP-UX SYMBOLIC DEBUGGER (END.O) $R evision: 74.03 $ HP Distributed Debugging Environment (HP/DDE) - Vers ion 4.03.P1 Rev: 981201.144612 /opt/langtools/dde/mgrs/lang_asm_pa: HP/DDE Language manager lang_asm_pa: HP-UX PA-RISC a ssembler - Version 4.03.P1 Rev: 981203.154131 /opt/langtools/dde/mgrs/lang_c: HP/DDE Language manager lang_c: ANSI C - Version 4.0 3.P1 Rev: 981203.153953 /opt/langtools/dde/mgrs/lang_c++: HP/DDE Language manager lang_c++: C++ - Version 4.03 .P1 Rev: 981203.154002 /opt/langtools/dde/mgrs/lang_ftn: HP/DDE Language manager lang_ftn: Fortran 77 - Versi on 4.03.P1 Rev: 981203.154015 /opt/langtools/dde/mgrs/lang_pas_apollo: HP/DDE Language manager lang_pas_apollo: Apollo Pasc al - Version 4.03.P1 Rev: 981203.154029 /opt/langtools/dde/mgrs/lang_pas_hp: HP/DDE Language manager lang_pas_hp: HP Pascal - Ver sion 4.03.P1 Rev: 981203.154038 /opt/langtools/dde/mgrs/obj_som_som: HP/DDE Object manager obj_som_som: HP SOM - Version 4.03.P1 Rev: 981201.145802 /opt/langtools/dde/mgrs/tgt_hpux_pa: HP/DDE Target manager tgt_hpux_pa: HP-UX PA-RISC - V ersion 4.03.P1 Rev: 981201.150547 /opt/langtools/dde/lib/nls/msg/C/lang_ftn.cat: None /opt/langtools/dde/lib/nls/msg/C/obj_mgr.cat: None /opt/langtools/dde/lib/nls/msg/C/dbgk_hpux_pa.cat: None cksum(1) Output: 1442421378 2404448 /opt/langtools/bin/dde.bin 2595346768 118784 /opt/langtools/dde/mgrs/lang_asm_pa 721600244 540672 /opt/langtools/dde/mgrs/lang_c 3640895701 475136 /opt/langtools/dde/mgrs/lang_c++ 2849832084 598016 /opt/langtools/dde/mgrs/lang_ftn 103637552 184320 /opt/langtools/dde/mgrs/lang_pas_apollo 1387751507 192512 /opt/langtools/dde/mgrs/lang_pas_hp 444931596 176128 /opt/langtools/dde/mgrs/obj_som_som 1626722287 868352 /opt/langtools/dde/mgrs/tgt_hpux_pa 1661788189 1882 /opt/langtools/dde/lib/nls/msg/C/ lang_ftn.cat 4131201811 4770 /opt/langtools/dde/lib/nls/msg/C/obj_mgr.cat 550720142 5817 /opt/langtools/dde/lib/nls/msg/C/ dbgk_hpux_pa.cat Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: None Patch Package Size: 5510 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 PHSS_17067 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHSS_17067.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHSS_17067.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHSS_17067. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHSS_17067.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHSS_17067.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: This patch only patches DDE 4.03(released version 4.03(1)). If you have an earlier version of DDE, then you must install DDE 4.03 before you can apply the patch. Force applying this patch to an earlier version of DDE (earlier than 4.03) will totally break the older installed version of DDE.