PROBLEM: (52718, 74111) (PATCH ID: OSF500-214) ******** Problem 1: Dbx stack trace is incomplete. In certain cases, dbx's 'where' command did not produce a complete stack trace. This was seen when debugging at the assembly level and using the 'stepi' command to step into a routine, or when there is a fault in some library routines. The following shows some instances of the problem. Stepping into a routine with stepi ('si'), Getting a stack trace ('where' or 't') Attempt to 'return' >*[main:68, 0x1200018b0] ldq r27, -32568(gp) (dbx) ni >*[main:68, 0x1200018b4] jsr r26, (r27), 0x120005e60 (dbx) si >*[_OtsMove, 0x3ff800d5e60] amask 0x1, r19 (dbx) t > 0 _OtsMove(0x3ff800d5bd0, 0x4, 0x120001850, 0x3, 0x4) [0x3ff800d5e60] (dbx) return no place to return to (dbx) up (dbx) t > 0 _OtsMove(0x3ff800d5bd0, 0x4, 0x120001850, 0x3, 0x4) [0x3ff800d5e60] Stepping into a routine until the stack is correct >*[main:68, 0x1200018cc] ldq r21, 40(r8) (dbx) ni >*[main:68, 0x1200018d0] bsr r26, recurse+0x8(line 29) (dbx) si >*[recurse:29, 0x120001638] ldq r28, -16448(sp) (dbx) t > 0 recurse(inbox = (...)) ["crashit.c":29, 0x120001638] (dbx) ni >*[recurse:29, 0x12000163c] ldq r28, -4096(sp) (dbx) ni >*[recurse:29, 0x120001640] ldq r28, -12256(sp) (dbx) ni >*[recurse:29, 0x120001644] lda sp, -16448(sp) (dbx) ni >*[recurse:29, 0x120001648] stq r26, 8144(sp) (dbx) t > 0 recurse(inbox = (...)) ["crashit.c":29, 0x120001648] (dbx) ni >*[recurse:29, 0x12000164c] stq r16, 16400(sp) (dbx) t > 0 recurse(inbox = (...)) ["crashit.c":29, 0x12000164c] 1 main(argc = 3, argv = 0x11ffffce8) ["crashit.c":68, 0x1200018d0] Problem 2: Dbx cannot set a variable after viewing a non-local variable: Dbx has several methods of looking for variables. If the variable is not found in the current routine, active procedures on the stack are searched, and then global variables are searched. When dbx searched up the stack for the variable, it failed to reset an internal pointer and the assignment to a local variable failed. main: 52 if (argc < 3) { (dbx) stop in justtryme [2] stop in justtryme (dbx) r 0 3 [2] stopped at [justtryme:21 ,0x1200015d4] deepend = levels; (dbx) n [justtryme:23 ,0x1200015d8] printf("Cpu %d going down, stack about %d levels deep\n", cpu, deepend); (dbx) p iter /* A variable local to the main routine 3 (dbx) assign deepend = 10 10 (dbx) p deepend 3 (dbx) q PROBLEM: (76484) (PATCH ID: OSF500-221) ******** This patch fixes a segmentation fault problem with the profiling tool prof. The problem resides in a few library routines that access line number information, and can also affect other commands that use the same routines. Dbx, odump, and stdump are all at risk. An example using prof: prof -pixie vmunix Profile listing generated Fri Jan 7 15:19:42 2000 with: prof -pixie vmunix Segmentation fault (core dumped) Another symptom may be a series of "unaligned access" error messages. This problem is related to new information put out by the compilers and linkers, and will not be seen in all cases. PROBLEM: (77973) (PATCH ID: OSF500-208) ******** This patch fixes a problem with two routines contained in libst library. The routines st_obj_open and st_obj_write doesn't check all of the permission types, owner, group and world, that a file can have. The libst routines only checks for owner permissions, therefore if the group had write permissions, the ability to change the file with these functions would be denied. The fix involves removing the check for file permissions and letting the system open() or write() return an error if the command is invalid. To reproduce an example use the strip utility in /usr/lib/cmplrs/cc > ls hello.o -rwxr-xr-x 1 nobody system 19888 Mar 28 12:15 a.out > chmod 577 hello.o > /usr/lib/cmplrs/cc/strip a.out strip: a.out: Invalid file access permissions > su >whoami root >/usr/lib/cmplrs/cc/strip a.out strip: a.out: Invalid file access permissions In the second case strip should have worked.