Jacques
I got a chance this morning to run tusc for both the uses. If I did it correctly here is the output from running it on the two test users.
onstat -g glo
IBM Informix Dynamic Server Version 11.70.FC4 -- On-Line -- Up 27 days 00:55:54 -- 1076296 Kbytes
MT global info:
sessions threads vps lngspins
0 73 17 0
sched calls thread switches yield 0 yield n yield forever
total: 1407334795 132198003 1279812992 99794471 6475162
per sec: 0 0 0 0 0
Virtual processor summary:
class vps usercpu syscpu total
cpu 6 41932.54 248.43 42180.97
aio 1 3.73 12.11 15.84
lio 1 3.32 9.85 13.17
pio 1 3.24 10.08 13.32
adm 1 115.33 67.39 182.72
soc 5 82.06 241.21 323.27
msc 1 0.08 0.10 0.18
fifo 1 3.24 9.87 13.11
total 17 42143.54 599.04 42742.58
Individual virtual processors:
vp pid class usercpu syscpu total Thread Eff
1 3737 cpu 798.41 31.10 829.51 889.49 93%
2 3834 adm 115.33 67.39 182.72 0.00 0%
3 3835 lio 3.32 9.85 13.17 13.17 100%
4 3839 pio 3.24 10.08 13.32 13.32 100%
5 3845 aio 3.73 12.11 15.84 15.84 100%
6 3848 msc 0.08 0.10 0.18 0.24 74%
7 3860 fifo 3.24 9.87 13.11 13.11 100%
8 3889 cpu 1492.38 40.75 1533.13 1598.08 95%
9 3891 cpu 1039.38 36.84 1076.22 1104.90 97%
10 3893 cpu 14266.45 53.33 14319.78 14456.13 99%
11 3899 cpu 11374.88 40.81 11415.69 11620.67 98%
12 3902 cpu 12961.04 45.60 13006.64 13176.86 98%
13 3903 soc 18.50 52.39 70.89 NA NA
14 3904 soc 17.23 51.24 68.47 NA NA
15 3905 soc 17.17 51.03 68.20 NA NA
16 3906 soc 17.40 51.20 68.60 NA NA
17 3907 soc 11.76 35.35 47.11 NA NA
tot 42143.54 599.04 42742.58
tusc -f -o /var/adm/crash/jda_tmp/tusc.log 3834
for ury the one that works I get this:
setgid(140) .............................................. = 0
setgroups(14, 0xc0000000414ad5f0) ........................ = 0
setuid(771) .............................................. = 0
umask(07) ................................................ = 07
chdir("/home/carsids/ury") ............................... = 0
execve("/bin/sh", 0xc000000047b213a0, 0xc000000049d91ec0) = 0 [32-bit]
mmap(NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d7fa000
open("/usr/lib/hpux32/dld.so", O_RDONLY, 0) .............. = 3
read(3, "7fE L F 0102010101\0\0\0\0\0\0\0".., 1024) ...... = 1024
mmap(NULL, 752624, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FILE|MAP_SHLIB, 3, 0) = 0xc0040000
sysconf(_SC_PAGE_SIZE) ................................... = 4096
mmap(NULL, 7384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_SHLIB, -1, 0) = 0x7d7f8000
mmap(0x7d7f5000, 12120, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FILE|MAP_SHLIB, 3, 786432) = 0x7d7f5000
close(3) ................................................. = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d7f2000
sysconf(_SC_PAGE_SIZE) ................................... = 4096
stat("/usr/lib/hpux32/dpd", 0x7ffff7f0) .................. = 0
open("/usr/lib/hpux32/dpd", O_RDONLY, 0) ................. = 3
fcntl(3, F_SETFD, 0) ..................................... = 0
mmap(NULL, 16384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d7ec000
getdents(3, 0x7d7ec028, 8192) ............................ = 80
getdents(3, 0x7d7ec028, 8192) ............................ = 0
close(3) ................................................. = 0
getuid() ................................................. = 771 (771)
getgid() ................................................. = 140 (140)
open("/bin/sh", O_RDONLY, 0) ............................. = 3
pread(3, "\0\0\002\0\0\0, \0\0\0\aH P \0\0".., 60, 436) .. = 60
close(3) ................................................. = 0
utssys(0x7fffec40, 60, 0) ................................ = 0
procxsec(4, -1, 0x7fffec10, 40) .......................... = 0
open("/usr/lib/hpux32/libc.so.1", O_RDONLY, 0) ........... = 3
fstat(3, 0x7ffff730) ..................................... = 0
read(3, "7fE L F 0102010101\0\0\0\0\0\0\0".., 52) ........ = 52
pread(3, "7fE L F 0102010101\0\0\0\0\0\0\0".., 1024, 0) .. = 1024
mmap(NULL, 2987424, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) = 0xc0300000
madvise(0xc0300000, 0x2d95a0, MADV_NORMAL) ............... = 0
mmap(NULL, 47784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_SHLIB, -1, 0) = 0x7d7e0000
mmap(0x7d7d8000, 29796, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 3014656) = 0x7d7d8000
close(3) ................................................. = 0
mmap(NULL, 16384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d7d4000
open("/usr/lib/hpux32/libdl.so.1", O_RDONLY, 0) .......... = 3
fstat(3, 0x7ffff730) ..................................... = 0
read(3, "7fE L F 0102010101\0\0\0\0\0\0\0".., 52) ........ = 52
pread(3, "7fE L F 0102010101\0\0\0\0\0\0\0".., 1024, 0) .. = 1024
mmap(NULL, 16080, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) = 0xc0004000
mmap(NULL, 224, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 65536) = 0x7d7fe000
close(3) ................................................. = 0
sigsetreturn(NULL, 0x6211988, 48640) ..................... = 0
mmap(NULL, 3336, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7d7f4000
sysconf(_SC_CPU_VERSION) ................................. = 768
sigprocmask(SIG_SETMASK, 0x7ffff7e0, 0x7ffff800) ......... = 0
brk(0x4001cbc0) .......................................... = 0
brk(0x4001ebb0) .......................................... = 0
brk(0x40020000) .......................................... = 0
sigprocmask(SIG_SETMASK, 0x7ffff800, 0x7ffff7e0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffdad0, 0x7fffdaf0) ......... = 0
brk(0x40021000) .......................................... = 0
sigprocmask(SIG_SETMASK, 0x7fffdaf0, 0x7fffdad0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffdad0, 0x7fffdaf0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffdaf0, 0x7fffdad0) ......... = 0
open("/usr/lib/nls/loc/hpux32/locales.3/en_US.iso88591", O_RDONLY, 0) = 3
fstat(3, 0x7fffcff0) ..................................... = 0
pread(3, "7fE L F 0102010101\0\0\0\0\0\0\0".., 1024, 0) .. = 1024
stat("/usr/lib/hpux32/dpd", 0x7fffc610) .................. = 0
open("/usr/lib/hpux32/dpd/en_US.iso88591.bpd", O_RDONLY, 0) ERR#2 ENOENT
mmap(NULL, 5952, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0) = 0xc0bfe000
mmap(NULL, 14808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_SHLIB, 3, 65536) = 0x7d7d0000
close(3) ................................................. = 0
stat("/usr/lib/nls/loc/hpux32/locales.3/en_US.iso88591", 0x7fffd5c0) = 0
sigprocmask(SIG_SETMASK, 0x7fffdad0, 0x7fffdaf0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffdaf0, 0x7fffdad0) ......... = 0
open("/usr/lib/nls/loc/hpux32/locales.3/C", O_RDONLY, 0) . ERR#2 ENOENT
sigprocmask(SIG_SETMASK, 0x7fffdad0, 0x7fffdaf0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffda80, 0x7fffdaa0) ......... = 0
brk(0x40022000) .......................................... = 0
sigprocmask(SIG_SETMASK, 0x7fffdaa0, 0x7fffda80) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffda80, 0x7fffdaa0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffdaa0, 0x7fffda80) ......... = 0
sigprocmask(SIG_SETMASK, 0x7fffdaf0, 0x7fffdad0) ......... = 0
sysconf(_SC_OPEN_MAX) .................................... = 4096
sigprocmask(SIG_SETMASK, 0x7ffff7c0, 0x7ffff7e0) ......... = 0
brk(0x40026000) .......................................... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7e0, 0x7ffff7c0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7c0, 0x7ffff7e0) ......... = 0
brk(0x4002a000) .......................................... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7e0, 0x7ffff7c0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7e0, 0x7ffff800) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff800, 0x7ffff7e0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7e0, 0x7ffff800) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff800, 0x7ffff7e0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7e0, 0x7ffff800) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff800, 0x7ffff7e0) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7e0, 0x7ffff800) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff790, 0x7ffff7b0) ......... = 0
brk(0x4002c000) .......................................... = 0
sigprocmask(SIG_SETMASK, 0x7ffff7b0, 0x7ffff790) ......... = 0
sigprocmask(SIG_SETMASK, 0x7ffff800, 0x7ffff7e0) ......... = 0
close(4096) .............................................. ERR#9 EBADF
close(29) ................................................ ERR#9 EBADF
close(28) ................................................ ERR#9 EBADF
close(27) ................................................ ERR#9 EBADF
close(26) ................................................ ERR#9 EBADF
close(25) ................................................ ERR#9 EBADF
close(24) ................................................ ERR#9 EBADF
open("/dev/null", O_RDONLY, 05030) ....................... = 3
close(3) ................................................. = 0
getuid() ................................................. = 771 (771)
getuid() ................................................. = 771 (771)
getgid() ................................................. = 140 (140)
getgid() ................................................. = 140 (140)
access("/var/tmp", F_OK) ................................. = 0
It goes on a lot more
sury the one that fails I get this:
setgid(140) .............................................. = 0
setgroups(21, 0xc000000041eab510) ........................ ERR#22 EINVAL
sigprocmask(SIG_BLOCK, 0x6000000000363790, NULL) ......... = 0
alarm(0) ................................................. = 0
sigaction(SIGALRM, 0x60000000003637e0, NULL) ............. = 0
sigprocmask(SIG_UNBLOCK, 0x60000000003637c0, NULL) ....... = 0
sigaction(SIGALRM, 0x6000000000363810, NULL) ............. = 0
getpid() ................................................. = 2247 (3834)
exit(131) ................................................ WIFEXITED(131)
Received signal 18, SIGCLD, in pause(), [caught]
Siginfo: child pid 2247, CLD_EXITED (status 131), si_errno: 0
pause() .................................................. ERR#4 EINTR
waitpid(-1, WIFEXITED(131), WNOHANG) ..................... = 2247
sigprocmask(SIG_BLOCK, 0x6000000000363580, NULL) ......... = 0
semop(55, 0x6000000000363590, 1) ......................... = 0
sigprocmask(SIG_UNBLOCK, 0x6000000000363580, NULL) ....... = 0
waitpid(-1, WIFEXITED(131), WNOHANG) ..................... = 0
Received signal 14, SIGALRM, in pause(), [caught], no siginfo
pause() .................................................. ERR#4 EINTR
time(0xc000000040625c60) ................................. = 1352299862
It looks like the setgroups() is different and not sure what that means or where it gets the values from.
John
-----Original Message-----
From: ids-bounces@iiug.org [mailto:ids-bounces@iiug.org] On Behalf Of John Adamski
Sent: Tuesday, November 06, 2012 2:49 PM
To: ids@iiug.org
Subject: RE: RE: RE: I have a puzzling situation [28715]
Jacques
It probably been 5-6 years since I last used tusc so will take me a little to clean out the cobwebs in my brain. But I do have a test/DR system I can use that usually only has me on it.
I see there are a number of other replies so will go check them out. I hope to have time tomorrow to figure out tusc and try your suggestion.
John
-----Original Message-----
From: ids-bounces@iiug.org [mailto:ids-bounces@iiug.org] On Behalf Of JACQUES RENAUT
Sent: Monday, November 05, 2012 1:11 PM
To: ids@iiug.org
Subject: Re: RE: RE: I have a puzzling situation [28704]
Original post:
Jim,
Here is the code (sql) using in my test procedure:
drop procedure testsysfail;
create procedure testsysfail()
returning char(32);
on exception in (-668)
return "Failed, error 668";
end exception;
SYSTEM " /tmp/test.csh";
return "succeded";
end procedure;
grant execute on testsysfail to public;
It is based on the production procedure, I just kept the few lines I needed that I thought to get a good equivalent procedure. As you can see the SYSTEM line only has SYSTEM " /tmp/test.csh"
And this is the content of the test.csh script:
#!/bin/csh -f
##
printenv | sort >& /tmp/test.log
id -rg >>& /tmp/test.log
id -ru >>& /tmp/test.log
exit 0
I reran the procedure as both users and get the same results one works one doesn't.
I than changed the SYSTEM command to be like your suggestion below "
/usr/bin/csh -f -v -x -c /tmp/test.sh >& /tmp/test.log ". I get the 668 error on the user that normally works. I also changed the SYSTEM command to go to test2.log, still get the 668 error. Then I did a which csh and changed the SYSTEM command to use /bin.csh and same results.
If I'm understanding your logic, running csh in the SYSTEM should have forced a sub-shel - well that doesn't seem to working. Which might imply one user is getting a sub-shell and the other not. But I can't find any setup that is different between the two users.
john
<stuff removed>
Response:
Here's an idea you might try. Assuming you have a test instance where you can control the activity, you could try using HP-UX tusc utility. You would want to tusc the adm vp (it's the vp that would be forking and exec'ing the system command for the sql system command). There's a follow fork option that you would want to use (along with others probably) so perhaps you could use the tusc output to see if you might spot differences in what each user session (the working vs non-working) was doing as the OS level or if there was some error in in some of the output that might narrow in on some problem. You'd have to run the tusc command as root, and again you'd want to do it on a system with limited access so the adm vp wouldn't be doing tons of stuff (so it's easier to tell the good output vs bad output). I'll go ahead and warn you the adm vp will generate a decent amount of stuff for signal handling and alarm/time output on it's own, but you should also be able to spot where it does it's fork and then exec of the shell for the system command and if you follow the fork, get output for what you system command is doing.
Jacques Renaut
IBM Informix Advanced Support
APD Team.
*******************************************************************************
Forum Note: Use "Reply" to post a response in the discussion forum.
*******************************************************************************
Forum Note: Use "Reply" to post a response in the discussion forum.