From: Paul W. R. I. <pr...@da...> - 2008-01-15 18:21:33
|
Hello List, I've done a fair amount of googling with this issue, and so far I've not come up with anything useful. Additionally, I haven't found anything in the list archives or forums, but perhaps I missed something obvious. I'm hoping someone here can give me a hand. I've got a suite of rexx scripts that I'm wanting to run via CGI with apache. I'm able to execute the scripts on the CLI just fine (even when running as nobody), however when run via Apache I get the lovely "Premature end of script headers error". I am able to run perl scripts via CGI though, so I wrapped a truss call around executing the REXX script in question. Here's the relevant truss output: open64("/var/run/name_service_door", O_RDONLY) = 3 fcntl(3, F_SETFD, 0x00000001) = 0 door_info(3, 0xFF0EF7E8) = 0 door_call(3, 0xFFBFD290) = 0 Incurred fault #6, FLTBOUNDS %pc = 0xFF030C50 siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 Received signal #11, SIGSEGV [default] siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 When run on the CLI as nobody: open64("/var/run/name_service_door", O_RDONLY) = 3 fcntl(3, F_SETFD, 0x00000001) = 0 door_info(3, 0xFF0EF7E8) = 0 door_call(3, 0xFFBFD4C8) = 0 open("//..OOREXX3.1.1.0_nobody", O_RDWR|O_CREAT, 0600) Err#13 EACCES [ALL] Where it then continues and generates the relevant output. BTW -- the script in question is: bash-3.00# cat testit.rex #!/opt/sfw/bin/rexx Say 'Content-type: text/html' Say '' Say '' Say '<html>' Say '<body>' Say 'Here we are!' Say '</body>' Say '</html>' I'm currently running 3.1.1: bash-3.00# pkginfo -l ooRexx PKGINST: ooRexx NAME: Open Object Rexx CATEGORY: application ARCH: sparc VERSION: 3.1.1 BASEDIR: /opt/sfw VENDOR: RexxLA DESC: Open Object Rexx PSTAMP: sparc-solaris220061122231554 INSTDATE: Jan 08 2008 10:00 STATUS: completely installed FILES: 72 installed pathnames 3 shared pathnames 8 directories 44 executables 50990 blocks used (approx) I've tried to upgrade to 3.2.0, but I don't see a prebuilt sparc package (or for 3.1.2), and when I try to build from source, I get: In file included from ./lib/RexxPlatformDefinitions.h:55, from ./lib/RexxLibrary.h:148, from ./lib/LocalProcessData.cpp:45: ./lib/RexxPlatformInterface.h:160: warning: redundant redeclaration of `int SysQueryThreadID()' in same scope ./kernel/platform/unix/ThreadSupport.hpp:52: warning: previous declaration of `int SysQueryThreadID()' g++ -DHAVE_CONFIG_H -I. -I. -I. -I/usr/local/include -DORX_VER=3 -DORX_REL=2 -DORX_MOD=0 -DORX_FIX=0 -DORX_SYS_STR=\"SUNOS\" -DORX_CATDIR=\"/opt/ooRexx/bin\" -DORX_SHARED_LIBRARY_EXT=\".so\" -DHIGHTID -I./lib -I./kernel -I./kernel/expression -I./kernel/instructions -I./kernel/classes -I./kernel/runtime -I./kernel/parser -I./kernel/messages -I./kernel/streamLibrary -I./kernel/SOM -I./kernel/platform/common -I./kernel/platform/unix -I./rexxapi/unix -g -O2 -g -O2 -m32 -Wall -funsigned-char -Wpointer-arith -Wcast-qual -Wcast-align -Wshadow -Wwrite-strings -D__cplusplus -Wredundant-decls -DNOOPT -DPTHREAD_KERNEL -DSHARED -D_POSIX_THREAD -D_REENTRANT -DHIGHTID -D_GNU_SOURCE -DLINUX -DOPSYS_LINUX -DOPSYS_SUN -MT librexx_la-LocalProcessData.lo -MD -MP -MF .deps/librexx_la-LocalProcessData.Tpo -c ./lib/LocalProcessData.cpp -o librexx_la-LocalProcessData.o >/dev/null 2>&1 /bin/bash ./libtool --tag=CXX --mode=link g++ -g -O2 -g -O2 -m32 -Wall -funsigned-char -Wpointer-arith -Wcast-qual -Wcast-align -Wshadow -Wwrite-strings -D__cplusplus -Wredundant-decls -DNOOPT -DPTHREAD_KERNEL -DSHARED -D_POSIX_THREAD -D_REENTRANT -DHIGHTID -D_GNU_SOURCE -DLINUX -DOPSYS_LINUX -DOPSYS_SUN -L/usr/local/lib -o librexx.la -rpath /opt/ooRexx/lib/ooRexx -version-info 3:4:0 librexx_la- SOMObjectNative.lo librexx_la-SOMProxyNative.lo librexx_la-SOMUtilities.lolibrexx_la- ASCIIDBCSStrings.lo librexx_la-ArrayClass.lo librexx_la-ClassClass.lolibrexx_la- DirectoryClass.lo librexx_la-IntegerClass.lo librexx_la-ListClass.lolibrexx_la- MessageClass.lo librexx_la-MethodClass.lo librexx_la-MutableBufferClass.lolibrexx_la- NumberStringClass.lo librexx_la-NumberStringMath.lo librexx_la- NumberStringMath2.lo librexx_la-ObjectClass.lo librexx_la-QueueClass.lolibrexx_la- RelationClass.lo librexx_la-StackClass.lo librexx_la-StemClass.lolibrexx_la- StringClass.lo librexx_la-StringClassBit.lo librexx_la- StringClassConversion.lo librexx_la-StringClassMisc.lo librexx_la- StringClassSub.lo librexx_la-StringClassUtil.lo librexx_la- StringClassWord.lo librexx_la-SupplierClass.lo librexx_la-TableClass.lolibrexx_la- BuiltinFunctions.lo librexx_la-ExpressionCompoundVariable.lo librexx_la- ExpressionDotVariable.lo librexx_la-ExpressionFunction.lo librexx_la- ExpressionMessage.lo librexx_la-ExpressionOperator.lo librexx_la- ExpressionStack.lo librexx_la-ExpressionStem.lo librexx_la- ExpressionVariable.lo librexx_la-IndirectVariableReference.lo librexx_la- ExpressionLogical.lo librexx_la-AddressInstruction.lo librexx_la- AssignmentInstruction.lo librexx_la-CallInstruction.lo librexx_la- CommandInstruction.lo librexx_la-DoBlock.lo librexx_la-DoInstruction.lolibrexx_la- DropInstruction.lo librexx_la-ElseInstruction.lo librexx_la-EndIf.lolibrexx_la- EndInstruction.lo librexx_la-ExitInstruction.lo librexx_la- ExposeInstruction.lo librexx_la-ForwardInstruction.lo librexx_la- GuardInstruction.lo librexx_la-IfInstruction.lo librexx_la- InterpretInstruction.lo librexx_la-LabelInstruction.lo librexx_la- LeaveInstruction.lo librexx_la-MessageInstruction.lo librexx_la- NopInstruction.lo librexx_la-NumericInstruction.lo librexx_la- OptionsInstruction.lo librexx_la-OtherwiseInstruction.lo librexx_la- ParseInstruction.lo librexx_la-ParseTarget.lo librexx_la-ParseTrigger.lolibrexx_la- ProcedureInstruction.lo librexx_la-QueueInstruction.lo librexx_la- RaiseInstruction.lo librexx_la-ReplyInstruction.lo librexx_la- ReturnInstruction.lo librexx_la-RexxInstruction.lo librexx_la- SayInstruction.lo librexx_la-SelectInstruction.lo librexx_la- SignalInstruction.lo librexx_la-ThenInstruction.lo librexx_la- TraceInstruction.lo librexx_la-UseInstruction.lo librexx_la- UseStrictInstruction.lo librexx_la-Clause.lo librexx_la-InstructionParser.lolibrexx_la- Scanner.lo librexx_la-SourceFile.lo librexx_la-Token.lo librexx_la- ActivityTable.lo librexx_la-DBCSSupport.lo librexx_la-ErrorMessages.lolibrexx_la- ExternalFunctions.lo librexx_la-FileSystem.lo librexx_la-MemorySupport.lolibrexx_la- MiscSystem.lo librexx_la-RexxMain.lo librexx_la-RexxQueues.lo librexx_la- StoredMetaData.lo librexx_la-SystemCommands.lo librexx_la-ThreadSupport.lolibrexx_la- TimeSupport.lo librexx_la-UseridFunction.lo librexx_la-ValueFunction.lolibrexx_la- VariablePool.lo librexx_la-DeadObject.lo librexx_la-FloatUtilities.lolibrexx_la- GlobalData.lo librexx_la-GlobalNames.lo librexx_la-Initialization.lolibrexx_la- MemorySegment.lo librexx_la-MemoryStats.lo librexx_la-NativeRoot.lolibrexx_la- Numerics.lo librexx_la-RexxActivation.lo librexx_la-RexxActivationStack.lolibrexx_la- RexxActivity.lo librexx_la-RexxBehaviour.lo librexx_la-RexxBuffer.lolibrexx_la- RexxCode.lo librexx_la-RexxCollection.lo librexx_la-RexxCompoundElement.lolibrexx_la- RexxCompoundTable.lo librexx_la-RexxCompoundTail.lo librexx_la- RexxConstants.lo librexx_la-RexxDateTime.lo librexx_la-RexxEnvelope.lolibrexx_la- RexxHashTable.lo librexx_la-RexxInternalStack.lo librexx_la-RexxListTable.lolibrexx_la- RexxLocalVariables.lo librexx_la-RexxMemory.lo librexx_la-RexxMisc.lolibrexx_la- RexxNativeActivation.lo librexx_la-RexxNativeMethod.lo librexx_la- RexxSOMCode.lo librexx_la-RexxSOMProxy.lo librexx_la-RexxSmartBuffer.lolibrexx_la- RexxStartup.lo librexx_la-RexxVariable.lo librexx_la- RexxVariableDictionary.lo librexx_la-Setup.lo librexx_la-Utilities.lolibrexx_la- Version.lo librexx_la-StreamCommandParser.lo librexx_la-StreamNative.lolibrexx_la- LocalProcessData.lo -lrt g++ -shared -nostdlib -L/usr/local/lib /usr/local/lib/gcc/sparc- sun-solaris2.10/3.4.6/crti.o /usr/ccs/lib/values-Xa.o/usr/local/lib/gcc/sparc- sun-solaris2.10/3.4.6/crtbegin.o .libs/librexx_la-SOMObjectNative.o.libs/librexx_la- SOMProxyNative.o .libs/librexx_la-SOMUtilities.o .libs/librexx_la- ASCIIDBCSStrings.o .libs/librexx_la-ArrayClass.o .libs/librexx_la- ClassClass.o .libs/librexx_la-DirectoryClass.o .libs/librexx_la- IntegerClass.o .libs/librexx_la-ListClass.o .libs/librexx_la-MessageClass.o.libs/librexx_la- MethodClass.o .libs/librexx_la-MutableBufferClass.o .libs/librexx_la- NumberStringClass.o .libs/librexx_la-NumberStringMath.o .libs/librexx_la- NumberStringMath2.o .libs/librexx_la-ObjectClass.o .libs/librexx_la- QueueClass.o .libs/librexx_la-RelationClass.o .libs/librexx_la-StackClass.o.libs/librexx_la- StemClass.o .libs/librexx_la-StringClass.o .libs/librexx_la-StringClassBit.o.libs/librexx_la- StringClassConversion.o .libs/librexx_la-StringClassMisc.o .libs/librexx_la- StringClassSub.o .libs/librexx_la-StringClassUtil.o .libs/librexx_la- StringClassWord.o .libs/librexx_la-SupplierClass.o .libs/librexx_la- TableClass.o .libs/librexx_la-BuiltinFunctions.o .libs/librexx_la- ExpressionCompoundVariable.o .libs/librexx_la-ExpressionDotVariable.o.libs/librexx_la- ExpressionFunction.o .libs/librexx_la-ExpressionMessage.o .libs/librexx_la- ExpressionOperator.o .libs/librexx_la-ExpressionStack.o .libs/librexx_la- ExpressionStem.o .libs/librexx_la-ExpressionVariable.o .libs/librexx_la- IndirectVariableReference.o .libs/librexx_la-ExpressionLogical.o.libs/librexx_la- AddressInstruction.o .libs/librexx_la-AssignmentInstruction.o.libs/librexx_la- CallInstruction.o .libs/librexx_la-CommandInstruction.o .libs/librexx_la- DoBlock.o .libs/librexx_la-DoInstruction.o .libs/librexx_la- DropInstruction.o .libs/librexx_la-ElseInstruction.o .libs/librexx_la- EndIf.o .libs/librexx_la-EndInstruction.o .libs/librexx_la-ExitInstruction.o.libs/librexx_la- ExposeInstruction.o .libs/librexx_la-ForwardInstruction.o .libs/librexx_la- GuardInstruction.o .libs/librexx_la-IfInstruction.o .libs/librexx_la- InterpretInstruction.o .libs/librexx_la-LabelInstruction.o .libs/librexx_la- LeaveInstruction.o .libs/librexx_la-MessageInstruction.o .libs/librexx_la- NopInstruction.o .libs/librexx_la-NumericInstruction.o .libs/librexx_la- OptionsInstruction.o .libs/librexx_la-OtherwiseInstruction.o.libs/librexx_la- ParseInstruction.o .libs/librexx_la-ParseTarget.o .libs/librexx_la- ParseTrigger.o .libs/librexx_la-ProcedureInstruction.o .libs/librexx_la- QueueInstruction.o .libs/librexx_la-RaiseInstruction.o .libs/librexx_la- ReplyInstruction.o .libs/librexx_la-ReturnInstruction.o .libs/librexx_la- RexxInstruction.o .libs/librexx_la-SayInstruction.o .libs/librexx_la- SelectInstruction.o .libs/librexx_la-SignalInstruction.o .libs/librexx_la- ThenInstruction.o .libs/librexx_la-TraceInstruction.o .libs/librexx_la- UseInstruction.o .libs/librexx_la-UseStrictInstruction.o .libs/librexx_la- Clause.o .libs/librexx_la-InstructionParser.o .libs/librexx_la-Scanner.o.libs/librexx_la- SourceFile.o .libs/librexx_la-Token.o .libs/librexx_la-ActivityTable.o.libs/librexx_la- DBCSSupport.o .libs/librexx_la-ErrorMessages.o .libs/librexx_la- ExternalFunctions.o .libs/librexx_la-FileSystem.o .libs/librexx_la- MemorySupport.o .libs/librexx_la-MiscSystem.o .libs/librexx_la-RexxMain.o.libs/librexx_la- RexxQueues.o .libs/librexx_la-StoredMetaData.o .libs/librexx_la- SystemCommands.o .libs/librexx_la-ThreadSupport.o .libs/librexx_la- TimeSupport.o .libs/librexx_la-UseridFunction.o .libs/librexx_la- ValueFunction.o .libs/librexx_la-VariablePool.o .libs/librexx_la- DeadObject.o .libs/librexx_la-FloatUtilities.o .libs/librexx_la-GlobalData.o.libs/librexx_la- GlobalNames.o .libs/librexx_la-Initialization.o .libs/librexx_la- MemorySegment.o .libs/librexx_la-MemoryStats.o .libs/librexx_la-NativeRoot.o.libs/librexx_la- Numerics.o .libs/librexx_la-RexxActivation.o .libs/librexx_la- RexxActivationStack.o .libs/librexx_la-RexxActivity.o .libs/librexx_la- RexxBehaviour.o .libs/librexx_la-RexxBuffer.o .libs/librexx_la-RexxCode.o.libs/librexx_la- RexxCollection.o .libs/librexx_la-RexxCompoundElement.o .libs/librexx_la- RexxCompoundTable.o .libs/librexx_la-RexxCompoundTail.o .libs/librexx_la- RexxConstants.o .libs/librexx_la-RexxDateTime.o .libs/librexx_la- RexxEnvelope.o .libs/librexx_la-RexxHashTable.o .libs/librexx_la- RexxInternalStack.o .libs/librexx_la-RexxListTable.o .libs/librexx_la- RexxLocalVariables.o .libs/librexx_la-RexxMemory.o .libs/librexx_la- RexxMisc.o .libs/librexx_la-RexxNativeActivation.o .libs/librexx_la- RexxNativeMethod.o .libs/librexx_la-RexxSOMCode.o .libs/librexx_la- RexxSOMProxy.o .libs/librexx_la-RexxSmartBuffer.o .libs/librexx_la- RexxStartup.o .libs/librexx_la-RexxVariable.o .libs/librexx_la- RexxVariableDictionary.o .libs/librexx_la-Setup.o .libs/librexx_la- Utilities.o .libs/librexx_la-Version.o .libs/librexx_la- StreamCommandParser.o .libs/librexx_la-StreamNative.o .libs/librexx_la- LocalProcessData.o -Wl,-R -Wl,/usr/local/lib -Wl,-R -Wl,/usr/local/lib -Wl,-R -Wl,/usr/local/ssl/lib -Wl,-R -Wl,/usr/openwin/lib -L/usr/local/lib -lrt -L/usr/local/lib/gcc/sparc-sun-solaris2.10/3.4.6 -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/local/lib/gcc/sparc-sun-solaris2.10/3.4.6/../../.. /usr/local/lib/libstdc++.so -L/sol10/SOURCES/S10/gcc-3.4.6/objdir/sparc- sun-solaris2.10/libstdc++-v3/src -L/sol10/SOURCES/S10/gcc-3.4.6 /objdir/sparc-sun-solaris2.10/libstdc++-v3/src/.libs -L/usr/local/ssl/lib -L/usr/openwin/lib -L/sol10/SOURCES/S10/gcc-3.4.6/objdir/gcc -lm -lgcc_s /usr/local/lib/gcc/sparc-sun-solaris2.10/3.4.6/crtend.o /usr/local/lib/gcc/sparc-sun-solaris2.10/3.4.6/crtn.o -m32 -Wl,-h -Wl, librexx.so.3 -o .libs/librexx.so.3.0.4 (cd .libs && rm -f librexx.so.3 && ln -s librexx.so.3.0.4 librexx.so.3) (cd .libs && rm -f librexx.so && ln -s librexx.so.3.0.4 librexx.so) false cru .libs/librexx.a librexx_la-SOMObjectNative.o librexx_la- SOMProxyNative.o librexx_la-SOMUtilities.o librexx_la-ASCIIDBCSStrings.olibrexx_la- ArrayClass.o librexx_la-ClassClass.o librexx_la-DirectoryClass.o librexx_la- IntegerClass.o librexx_la-ListClass.o librexx_la-MessageClass.o librexx_la- MethodClass.o librexx_la-MutableBufferClass.o librexx_la-NumberStringClass.olibrexx_la- NumberStringMath.o librexx_la-NumberStringMath2.o librexx_la-ObjectClass.olibrexx_la- QueueClass.o librexx_la-RelationClass.o librexx_la-StackClass.o librexx_la- StemClass.o librexx_la-StringClass.o librexx_la-StringClassBit.o librexx_la- StringClassConversion.o librexx_la-StringClassMisc.o librexx_la- StringClassSub.o librexx_la-StringClassUtil.o librexx_la-StringClassWord.olibrexx_la- SupplierClass.o librexx_la-TableClass.o librexx_la-BuiltinFunctions.olibrexx_la- ExpressionCompoundVariable.o librexx_la-ExpressionDotVariable.o librexx_la- ExpressionFunction.o librexx_la-ExpressionMessage.o librexx_la- ExpressionOperator.o librexx_la-ExpressionStack.o librexx_la- ExpressionStem.o librexx_la-ExpressionVariable.o librexx_la- IndirectVariableReference.o librexx_la-ExpressionLogical.o librexx_la- AddressInstruction.o librexx_la-AssignmentInstruction.o librexx_la- CallInstruction.o librexx_la-CommandInstruction.o librexx_la-DoBlock.olibrexx_la- DoInstruction.o librexx_la-DropInstruction.o librexx_la-ElseInstruction.olibrexx_la- EndIf.o librexx_la-EndInstruction.o librexx_la-ExitInstruction.o librexx_la- ExposeInstruction.o librexx_la-ForwardInstruction.o librexx_la- GuardInstruction.o librexx_la-IfInstruction.o librexx_la- InterpretInstruction.o librexx_la-LabelInstruction.o librexx_la- LeaveInstruction.o librexx_la-MessageInstruction.o librexx_la- NopInstruction.o librexx_la-NumericInstruction.o librexx_la- OptionsInstruction.o librexx_la-OtherwiseInstruction.o librexx_la- ParseInstruction.o librexx_la-ParseTarget.o librexx_la-ParseTrigger.olibrexx_la- ProcedureInstruction.o librexx_la-QueueInstruction.o librexx_la- RaiseInstruction.o librexx_la-ReplyInstruction.o librexx_la- ReturnInstruction.o librexx_la-RexxInstruction.o librexx_la-SayInstruction.olibrexx_la- SelectInstruction.o librexx_la-SignalInstruction.o librexx_la- ThenInstruction.o librexx_la-TraceInstruction.o librexx_la-UseInstruction.olibrexx_la- UseStrictInstruction.o librexx_la-Clause.o librexx_la-InstructionParser.olibrexx_la- Scanner.o librexx_la-SourceFile.o librexx_la-Token.o librexx_la- ActivityTable.o librexx_la-DBCSSupport.o librexx_la-ErrorMessages.olibrexx_la- ExternalFunctions.o librexx_la-FileSystem.o librexx_la-MemorySupport.olibrexx_la- MiscSystem.o librexx_la-RexxMain.o librexx_la-RexxQueues.o librexx_la- StoredMetaData.o librexx_la-SystemCommands.o librexx_la-ThreadSupport.olibrexx_la- TimeSupport.o librexx_la-UseridFunction.o librexx_la-ValueFunction.olibrexx_la- VariablePool.o librexx_la-DeadObject.o librexx_la-FloatUtilities.olibrexx_la- GlobalData.o librexx_la-GlobalNames.o librexx_la-Initialization.olibrexx_la- MemorySegment.o librexx_la-MemoryStats.o librexx_la-NativeRoot.o librexx_la- Numerics.o librexx_la-RexxActivation.o librexx_la-RexxActivationStack.olibrexx_la- RexxActivity.o librexx_la-RexxBehaviour.o librexx_la-RexxBuffer.olibrexx_la- RexxCode.o librexx_la-RexxCollection.o librexx_la-RexxCompoundElement.olibrexx_la- RexxCompoundTable.o librexx_la-RexxCompoundTail.o librexx_la-RexxConstants.olibrexx_la- RexxDateTime.o librexx_la-RexxEnvelope.o librexx_la-RexxHashTable.olibrexx_la- RexxInternalStack.o librexx_la-RexxListTable.o librexx_la- RexxLocalVariables.o librexx_la-RexxMemory.o librexx_la-RexxMisc.olibrexx_la- RexxNativeActivation.o librexx_la-RexxNativeMethod.o librexx_la- RexxSOMCode.o librexx_la-RexxSOMProxy.o librexx_la-RexxSmartBuffer.olibrexx_la- RexxStartup.o librexx_la-RexxVariable.o librexx_la-RexxVariableDictionary.olibrexx_la- Setup.o librexx_la-Utilities.o librexx_la-Version.o librexx_la- StreamCommandParser.o librexx_la-StreamNative.o librexx_la- LocalProcessData.o make: *** [librexx.la] Error 1 Any help that you folks could provide would be greatly appreciated. Thanks! -P |
From: Paul W. R. I. <pr...@da...> - 2008-01-15 20:53:51
|
Hey David, I don't think I was clear in my initial email: I am able to run the script from the command line as the apache user. It runs just fine on the command line and shows output: # su - nobody $ cd /usr/local/apache2/cgi-bin $ ./testit.rex Content-type: text/html <html><head> <META HTTP-EQUIV="pragma" CONTENT="no-cache"> </head> <body> Here we are! </body> </html> I'm pretty sure this proves there's no shared library issue, unless I'm missing something obvious. I'm not running mod_rexx or anything like that, so apache is going to do exactly what I just did, which is find the executable in the cgi-bin dir, and execute it. Plus, when I run truss against the script via apache, I see that rexx fires up just fine, and it chokes after accessing /var/run/name_service_door, but truss also shows that it works just fine when run directly from the CLI. The part that doesn't make any sense at all to me is that if I'm able to run the script on the CLI as nobody (to ensure there are no permission, pathing, or shared library issues), it should still work just fine when run from apache, shouldn't it? Also, as a last point, I've added a SetEnv LD_LIBRARY_PATH in httpd.conf (to point to /usr/local/lib, /usr/lib, and /lib), and it doesn't change the resulting output one way or the other. In addition, if I were missing a library, I'd see output in truss to show that the linker tried to open a library that it couldn't find, or didn't have permission to, I think: in the full truss output I see it opening various shared libs with no issues. Thanks, -P |
From: David A. <da...@us...> - 2008-01-15 21:16:53
|
Paul - Just because you can run a script as the Apache user does NOT mean that= user has the same environment as the Apache run time. The start up scri= pt for Apache on Linux typically modifies the shred library path to a subs= et of what any user would have. This is a security measure imposed by the = OS to prevent unknown shared libraries from being available. For instance,= my Linux system includes the /usr/share/lib subdir in the library path for= ALL users but Apache does not have this subdir in its library path. This is= typically the case for all system services including Apache. It has not= hing to do with the user the process is owned by. Thanks, W. David Ashley IBM Systems and Technology Group Lab Services Open Object Rexx Team Mobile Phone: 512-289-7506= |
From: Paul W. R. I. <pr...@da...> - 2008-01-16 00:52:49
|
Hey David, thanks for your reply! Like I mentioned earlier, I set the LD_LIBRARY_PATH in Apache using setenv. I've put together a quick Perl script to show what environment apache has so we can put this to bed: bash-3.00$ cat tester.pl #!/usr/bin/perl print "Content type: text\n\n"; print "LD_LIBRARY_PATH: " . $ENV{LD_LIBRARY_PATH} . "\n"; print `truss ./test.rex 2>&1`; exit; The output of the LD_LIBRARY_PATH when viewed via http is LD_LIBRARY_PATH: /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib/ooRexx When on the CLI, I see: bash-3.00$ id uid=60001(nobody) gid=60001(nobody) bash-3.00$ echo $LD_LIBRARY_PATH /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib/ooRexx bash-3.00$ ./test.rex Hello, World Please note that the LD_LIBRARY_PATH's are the same when viewed either from the HTTP UI or via the CLI. I'm positive that this isn't a shared library issue. Also, in the truss output, I see REXX opening the various shared libraries, traversing the various locations in the LD_LIBRARY_PATH until it finds the file it's looking for, just as it does when it successfully executes on the CLI. The first time we see any variance between them is when trying to access the /var/run/name_service_door. I've attached the full truss output below for the failed case (please note that this is Solaris on Sparc, not linux on i386): execve("/opt/sfw/bin/rexx", 0xFFBFFABC, 0xFFBFFAC8) argc = 2 resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12 resolvepath("/opt/sfw/bin/rexx", "/opt/sfw/bin/rexx", 1023) = 17 stat("/opt/sfw/bin/rexx", 0xFFBFF898) = 0 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT stat("/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/local/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT stat("/opt/sfw/lib/ooRexx/librexx.so.3", 0xFFBFF3B8) = 0 resolvepath("/opt/sfw/lib/ooRexx/librexx.so.3", "/opt/sfw/lib/ooRexx/librexx.so.3.0.2", 1023) = 36 open("/opt/sfw/lib/ooRexx/librexx.so.3", O_RDONLY) = 3 mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF3A0000 mmap(0x00010000, 1179648, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF200000 mmap(0xFF200000, 953281, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF200000 mmap(0xFF2F8000, 153456, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 950272) = 0xFF2F8000 mmap(0xFF31E000, 7704, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF31E000 munmap(0xFF2EA000, 57344) = 0 memcntl(0xFF200000, 347856, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/local/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT stat("/opt/sfw/lib/ooRexx/librexxapi.so.3", 0xFFBFF3B8) = 0 resolvepath("/opt/sfw/lib/ooRexx/librexxapi.so.3", "/opt/sfw/lib/ooRexx/librexxapi.so.3.0.2", 1023) = 39 open("/opt/sfw/lib/ooRexx/librexxapi.so.3", O_RDONLY) = 3 mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000 mmap(0x00010000, 114688, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF380000 mmap(0xFF380000, 41040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF380000 mmap(0xFF39A000, 4392, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 40960) = 0xFF39A000 munmap(0xFF38C000, 57344) = 0 memcntl(0xFF380000, 10396, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/opt/sfw/lib/ooRexx/libstdc++.so.5", 0xFFBFF3B8) = 0 resolvepath("/opt/sfw/lib/ooRexx/libstdc++.so.5", "/opt/sfw/lib/ooRexx/libstdc++.so.5.0.5", 1023) = 38 open("/opt/sfw/lib/ooRexx/libstdc++.so.5", O_RDONLY) = 3 mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000 mmap(0x00010000, 573440, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF100000 mmap(0xFF100000, 417816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF100000 mmap(0xFF176000, 82500, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 417792) = 0xFF176000 munmap(0xFF168000, 57344) = 0 mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF370000 memcntl(0xFF100000, 184988, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/libdl.so.1", 0xFFBFF3B8) = 0 resolvepath("/lib/libdl.so.1", "/lib/libdl.so.1", 1023) = 15 open("/lib/libdl.so.1", O_RDONLY) = 3 mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000 close(3) = 0 stat("/lib/libpthread.so.1", 0xFFBFF3B8) = 0 resolvepath("/lib/libpthread.so.1", "/lib/libpthread.so.1", 1023) = 20 open("/lib/libpthread.so.1", O_RDONLY) = 3 mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF360000 mmap(0x00002000, 16384, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF368000 mmap(0xFF368000, 12032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF368000 close(3) = 0 stat("/lib/librt.so.1", 0xFFBFF3B8) = 0 resolvepath("/lib/librt.so.1", "/lib/librt.so.1", 1023) = 15 open("/lib/librt.so.1", O_RDONLY) = 3 mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF360000 mmap(0x00010000, 98304, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF340000 mmap(0xFF340000, 22142, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF340000 mmap(0xFF356000, 1710, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 24576) = 0xFF356000 munmap(0xFF346000, 65536) = 0 memcntl(0xFF340000, 9440, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/libm.so.1", 0xFFBFF3B8) = 0 resolvepath("/lib/libm.so.1", "/lib/libm.so.1", 1023) = 14 open("/lib/libm.so.1", O_RDONLY) = 3 mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF360000 mmap(0x00010000, 81920, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1E0000 mmap(0xFF1E0000, 14536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1E0000 mmap(0xFF1F2000, 6856, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 8192) = 0xFF1F2000 munmap(0xFF1E4000, 57344) = 0 memcntl(0xFF1E0000, 6436, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/local/lib/libgcc_s.so.1", 0xFFBFF3B8) = 0 resolvepath("/usr/local/lib/libgcc_s.so.1", "/usr/local/lib/libgcc_s.so.1", 1023) = 28 open("/usr/local/lib/libgcc_s.so.1", O_RDONLY) = 3 mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF360000 mmap(0x00010000, 106496, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1C0000 mmap(0xFF1C0000, 34112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1C0000 mmap(0xFF1D8000, 3532, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 32768) = 0xFF1D8000 munmap(0xFF1CA000, 57344) = 0 memcntl(0xFF1C0000, 6536, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/libc.so.1", 0xFFBFF3B8) = 0 resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14 open("/lib/libc.so.1", O_RDONLY) = 3 mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF360000 mmap(0x00010000, 991232, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF000000 mmap(0xFF000000, 882285, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF000000 mmap(0xFF0E8000, 29469, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 884736) = 0xFF0E8000 mmap(0xFF0F0000, 2592, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF0F0000 munmap(0xFF0D8000, 65536) = 0 memcntl(0xFF000000, 139784, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT stat("/lib/libaio.so.1", 0xFFBFF3B8) = 0 resolvepath("/lib/libaio.so.1", "/lib/libaio.so.1", 1023) = 16 open("/lib/libaio.so.1", O_RDONLY) = 3 mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF360000 mmap(0x00010000, 106496, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1A0000 mmap(0xFF1A0000, 31852, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1A0000 mmap(0xFF1B8000, 1978, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 32768) = 0xFF1B8000 munmap(0xFF1A8000, 65536) = 0 memcntl(0xFF1A0000, 5980, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 stat("/lib/libmd5.so.1", 0xFFBFF3B8) = 0 resolvepath("/lib/libmd5.so.1", "/lib/libmd5.so.1", 1023) = 16 open("/lib/libmd5.so.1", O_RDONLY) = 3 mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF360000 mmap(0x00010000, 81920, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFE0000 mmap(0xFEFE0000, 5312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEFE0000 mmap(0xFEFF2000, 416, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 8192) = 0xFEFF2000 munmap(0xFEFE2000, 65536) = 0 mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF330000 memcntl(0xFEFE0000, 908, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 close(3) = 0 munmap(0xFF360000, 8192) = 0 mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFD0000 getcontext(0xFFBFF590) getrlimit(RLIMIT_STACK, 0xFFBFF570) = 0 getpid() = 17615 [17614] setustack(0xFEFD2088) sysconfig(_CONFIG_SEM_VALUE_MAX) = 2147483647 sysconfig(_CONFIG_STACK_PROT) = 7 stat("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", 0xFFBFEC30) = 0 resolvepath("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", "/platform/sun4u-us3/lib/libc_psr.so.1", 1023) = 37 open("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", O_RDONLY) = 3 mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFEFC0000 close(3) = 0 getcwd("/usr/local/apache2/cgi-bin", 1025) = 0 getuid() = 60001 [60001] brk(0x000210A0) = 0 brk(0x000230A0) = 0 open64("/var/run/name_service_door", O_RDONLY) = 3 fcntl(3, F_SETFD, 0x00000001) = 0 door_info(3, 0xFF0EF7E8) = 0 door_call(3, 0xFFBFD2E8) = 0 Incurred fault #6, FLTBOUNDS %pc = 0xFF030C50 siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 Received signal #11, SIGSEGV [default] siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 Any ideas? Thanks, -P On Jan 15, 2008 4:14 PM, David Ashley <da...@us...> wrote: > Paul - > > Just because you can run a script as the Apache user does NOT mean that > user has the same environment as the Apache run time. The start up script > for Apache on Linux typically modifies the shred library path to a subset of > what any user would have. This is a security measure imposed by the OS to > prevent unknown shared libraries from being available. For instance, my > Linux system includes the /usr/share/lib subdir in the library path for ALL > users but Apache does not have this subdir in its library path. This is > typically the case for all system services including Apache. It has nothing > to do with the user the process is owned by. > > Thanks, > W. David Ashley > IBM Systems and Technology Group Lab Services > Open Object Rexx Team > Mobile Phone: 512-289-7506 > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Oorexx-users mailing list > Oor...@li... > https://lists.sourceforge.net/lists/listinfo/oorexx-users > > |
From: Paul W. R. I. <pr...@da...> - 2008-01-16 01:53:03
|
Hello, I was able to get ooRexx-3.2.0.tar.gz to build on this machine this evening, and truss shows me the same output. I had been hoping this would magically go away with the latest version, but unfortunately no luck on that front. Does anyone know why Rexx is attempting to access name_service_door on Solaris? It's used to interact with the OS to do DNS lookups? Thanks, -P On Jan 15, 2008 7:52 PM, Paul W. Roach III <pr...@da...> wrote: > Hey David, thanks for your reply! Like I mentioned earlier, I set the > LD_LIBRARY_PATH in Apache using setenv. I've put together a quick Perl > script to show what environment apache has so we can put this to bed: > > > bash-3.00$ cat tester.pl > #!/usr/bin/perl > > print "Content type: text\n\n"; > > print "LD_LIBRARY_PATH: " . $ENV{LD_LIBRARY_PATH} . "\n"; > > print `truss ./test.rex 2>&1`; > exit; > The output of the LD_LIBRARY_PATH when viewed via http is LD_LIBRARY_PATH: > /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib/ooRexx > When on the CLI, I see: > > bash-3.00$ id > uid=60001(nobody) gid=60001(nobody) > bash-3.00$ echo $LD_LIBRARY_PATH > /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib/ooRexx > bash-3.00$ ./test.rex > Hello, World > Please note that the LD_LIBRARY_PATH's are the same when viewed either > from the HTTP UI or via the CLI. I'm positive that this isn't a shared > library issue. Also, in the truss output, I see REXX opening the various > shared libraries, traversing the various locations in the LD_LIBRARY_PATH > until it finds the file it's looking for, just as it does when it > successfully executes on the CLI. The first time we see any variance > between them is when trying to access the /var/run/name_service_door. > > I've attached the full truss output below for the failed case (please note > that this is Solaris on Sparc, not linux on i386): > > execve("/opt/sfw/bin/rexx", 0xFFBFFABC, 0xFFBFFAC8) argc = 2 > resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12 > resolvepath("/opt/sfw/bin/rexx", "/opt/sfw/bin/rexx", 1023) = 17 > stat("/opt/sfw/bin/rexx", 0xFFBFF898) = 0 > open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT > stat("/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/local/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT > stat("/opt/sfw/lib/ooRexx/librexx.so.3", 0xFFBFF3B8) = 0 > resolvepath("/opt/sfw/lib/ooRexx/librexx.so.3", > "/opt/sfw/lib/ooRexx/librexx.so.3.0.2", 1023) = 36 > open("/opt/sfw/lib/ooRexx/librexx.so.3", O_RDONLY) = 3 > mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = > 0xFF3A0000 > mmap(0x00010000, 1179648, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF200000 > mmap(0xFF200000, 953281, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF200000 > mmap(0xFF2F8000, 153456, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 950272) = 0xFF2F8000 > mmap(0xFF31E000, 7704, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF31E000 > munmap(0xFF2EA000, 57344) = 0 > memcntl(0xFF200000, 347856, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/local/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT > stat("/opt/sfw/lib/ooRexx/librexxapi.so.3", 0xFFBFF3B8) = 0 > resolvepath("/opt/sfw/lib/ooRexx/librexxapi.so.3", > "/opt/sfw/lib/ooRexx/librexxapi.so.3.0.2", 1023) = 39 > open("/opt/sfw/lib/ooRexx/librexxapi.so.3", O_RDONLY) = 3 > mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF3A0000 > mmap(0x00010000, 114688, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF380000 > mmap(0xFF380000, 41040, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF380000 > mmap(0xFF39A000, 4392, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 40960) = 0xFF39A000 > munmap(0xFF38C000, 57344) = 0 > memcntl(0xFF380000, 10396, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/opt/sfw/lib/ooRexx/libstdc++.so.5", 0xFFBFF3B8) = 0 > resolvepath("/opt/sfw/lib/ooRexx/libstdc++.so.5", > "/opt/sfw/lib/ooRexx/libstdc++.so.5.0.5", 1023) = 38 > open("/opt/sfw/lib/ooRexx/libstdc++.so.5", O_RDONLY) = 3 > mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF3A0000 > mmap(0x00010000, 573440, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF100000 > mmap(0xFF100000, 417816, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF100000 > mmap(0xFF176000, 82500, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 417792) = 0xFF176000 > munmap(0xFF168000, 57344) = 0 > mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF370000 > memcntl(0xFF100000, 184988, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/libdl.so.1", 0xFFBFF3B8) = 0 > resolvepath("/lib/libdl.so.1", "/lib/libdl.so.1", 1023) = 15 > open("/lib/libdl.so.1", O_RDONLY) = 3 > mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF3A0000 > close(3) = 0 > stat("/lib/libpthread.so.1", 0xFFBFF3B8) = 0 > resolvepath("/lib/libpthread.so.1", "/lib/libpthread.so.1", 1023) = 20 > open("/lib/libpthread.so.1", O_RDONLY) = 3 > mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = > 0xFF360000 > mmap(0x00002000, 16384, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF368000 > mmap(0xFF368000, 12032, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF368000 > close(3) = 0 > stat("/lib/librt.so.1", 0xFFBFF3B8) = 0 > resolvepath("/lib/librt.so.1", "/lib/librt.so.1", 1023) = 15 > open("/lib/librt.so.1", O_RDONLY) = 3 > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF360000 > mmap(0x00010000, 98304, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF340000 > mmap(0xFF340000, 22142, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF340000 > mmap(0xFF356000, 1710, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 24576) = 0xFF356000 > munmap(0xFF346000, 65536) = 0 > memcntl(0xFF340000, 9440, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/libm.so.1", 0xFFBFF3B8) = 0 > resolvepath("/lib/libm.so.1", "/lib/libm.so.1", 1023) = 14 > open("/lib/libm.so.1", O_RDONLY) = 3 > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF360000 > mmap(0x00010000, 81920, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1E0000 > mmap(0xFF1E0000, 14536, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1E0000 > mmap(0xFF1F2000, 6856, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 8192) = 0xFF1F2000 > munmap(0xFF1E4000, 57344) = 0 > memcntl(0xFF1E0000, 6436, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/local/lib/libgcc_s.so.1", 0xFFBFF3B8) = 0 > resolvepath("/usr/local/lib/libgcc_s.so.1", > "/usr/local/lib/libgcc_s.so.1", 1023) = 28 > open("/usr/local/lib/libgcc_s.so.1", O_RDONLY) = 3 > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF360000 > mmap(0x00010000, 106496, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1C0000 > mmap(0xFF1C0000, 34112, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1C0000 > mmap(0xFF1D8000, 3532, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 32768) = 0xFF1D8000 > munmap(0xFF1CA000, 57344) = 0 > memcntl(0xFF1C0000, 6536, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/libc.so.1", 0xFFBFF3B8) = 0 > resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14 > open("/lib/libc.so.1", O_RDONLY) = 3 > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF360000 > mmap(0x00010000, 991232, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF000000 > mmap(0xFF000000, 882285, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF000000 > mmap(0xFF0E8000, 29469, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 884736) = 0xFF0E8000 > mmap(0xFF0F0000, 2592, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF0F0000 > munmap(0xFF0D8000, 65536) = 0 > memcntl(0xFF000000, 139784, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > stat("/lib/libaio.so.1", 0xFFBFF3B8) = 0 > resolvepath("/lib/libaio.so.1", "/lib/libaio.so.1", 1023) = 16 > open("/lib/libaio.so.1", O_RDONLY) = 3 > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF360000 > mmap(0x00010000, 106496, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1A0000 > mmap(0xFF1A0000, 31852, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1A0000 > mmap(0xFF1B8000, 1978, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 32768) = 0xFF1B8000 > munmap(0xFF1A8000, 65536) = 0 > memcntl(0xFF1A0000, 5980, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > stat("/lib/libmd5.so.1", 0xFFBFF3B8) = 0 > resolvepath("/lib/libmd5.so.1", "/lib/libmd5.so.1", 1023) = 16 > open("/lib/libmd5.so.1", O_RDONLY) = 3 > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = > 0xFF360000 > mmap(0x00010000, 81920, PROT_NONE, > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFE0000 > mmap(0xFEFE0000, 5312, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEFE0000 > mmap(0xFEFF2000, 416, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 8192) = 0xFEFF2000 > munmap(0xFEFE2000, 65536) = 0 > mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF330000 > memcntl(0xFEFE0000, 908, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > close(3) = 0 > munmap(0xFF360000, 8192) = 0 > mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFD0000 > getcontext(0xFFBFF590) > getrlimit(RLIMIT_STACK, 0xFFBFF570) = 0 > getpid() = 17615 [17614] > setustack(0xFEFD2088) > sysconfig(_CONFIG_SEM_VALUE_MAX) = 2147483647 > sysconfig(_CONFIG_STACK_PROT) = 7 > stat("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", 0xFFBFEC30) = 0 > resolvepath("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", > "/platform/sun4u-us3/lib/libc_psr.so.1", 1023) = 37 > open("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", O_RDONLY) = 3 > mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = > 0xFEFC0000 > close(3) = 0 > getcwd("/usr/local/apache2/cgi-bin", 1025) = 0 > getuid() = 60001 [60001] > brk(0x000210A0) = 0 > brk(0x000230A0) = 0 > open64("/var/run/name_service_door", O_RDONLY) = 3 > fcntl(3, F_SETFD, 0x00000001) = 0 > door_info(3, 0xFF0EF7E8) = 0 > door_call(3, 0xFFBFD2E8) = 0 > Incurred fault #6, FLTBOUNDS %pc = 0xFF030C50 > siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 > Received signal #11, SIGSEGV [default] > siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 > > Any ideas? > > Thanks, > -P > > > > > On Jan 15, 2008 4:14 PM, David Ashley <da...@us...> wrote: > > > Paul - > > > > Just because you can run a script as the Apache user does NOT mean that > > user has the same environment as the Apache run time. The start up script > > for Apache on Linux typically modifies the shred library path to a subset of > > what any user would have. This is a security measure imposed by the OS to > > prevent unknown shared libraries from being available. For instance, my > > Linux system includes the /usr/share/lib subdir in the library path for ALL > > users but Apache does not have this subdir in its library path. This is > > typically the case for all system services including Apache. It has nothing > > to do with the user the process is owned by. > > > > Thanks, > > W. David Ashley > > IBM Systems and Technology Group Lab Services > > Open Object Rexx Team > > Mobile Phone: 512-289-7506 > > > > > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by: Microsoft > > Defy all challenges. Microsoft(R) Visual Studio 2008. > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > _______________________________________________ > > Oorexx-users mailing list > > Oor...@li... > > https://lists.sourceforge.net/lists/listinfo/oorexx-users > > > > > |
From: Paul W. R. I. <pr...@da...> - 2008-01-16 02:30:18
|
Problem solved -- some more digging into what was happening here was key. The truss on the CLI version showed that the next step after the FLTBOUNDS was to access the ..OOREXX3.1.1.0_nobody file. It just so happens that nobody had a home directory of /. I manually created the /....OOREXX3.1.1.0_nobody file and set it chown'ed by nobody:nobody with 777 perms, but to no avail. I then set nobody's home dir to be /usr/local/apache2 (which is where apache lives on this host) and used setenv in apache to set HOME to /usr/local/apache2. Problem resolved. Thanks, -P On Jan 15, 2008 8:53 PM, Paul W. Roach III <pr...@da...> wrote: > Hello, > > I was able to get ooRexx-3.2.0.tar.gz to build on this machine this > evening, and truss shows me the same output. I had been hoping this would > magically go away with the latest version, but unfortunately no luck on that > front. > > Does anyone know why Rexx is attempting to access name_service_door on > Solaris? It's used to interact with the OS to do DNS lookups? > > Thanks, > -P > > On Jan 15, 2008 7:52 PM, Paul W. Roach III <pr...@da...> wrote: > > > Hey David, thanks for your reply! Like I mentioned earlier, I set the > > LD_LIBRARY_PATH in Apache using setenv. I've put together a quick Perl > > script to show what environment apache has so we can put this to bed: > > > > > > bash-3.00$ cat tester.pl > > #!/usr/bin/perl > > > > print "Content type: text\n\n"; > > > > print "LD_LIBRARY_PATH: " . $ENV{LD_LIBRARY_PATH} . "\n"; > > > > print `truss ./test.rex 2>&1`; > > exit; > > The output of the LD_LIBRARY_PATH when viewed via http is > > LD_LIBRARY_PATH: /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib/ooRexx > > When on the CLI, I see: > > > > bash-3.00$ id > > uid=60001(nobody) gid=60001(nobody) > > bash-3.00$ echo $LD_LIBRARY_PATH > > /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib/ooRexx > > bash-3.00$ ./test.rex > > Hello, World > > Please note that the LD_LIBRARY_PATH's are the same when viewed either > > from the HTTP UI or via the CLI. I'm positive that this isn't a shared > > library issue. Also, in the truss output, I see REXX opening the various > > shared libraries, traversing the various locations in the LD_LIBRARY_PATH > > until it finds the file it's looking for, just as it does when it > > successfully executes on the CLI. The first time we see any variance > > between them is when trying to access the /var/run/name_service_door. > > > > I've attached the full truss output below for the failed case (please > > note that this is Solaris on Sparc, not linux on i386): > > > > execve("/opt/sfw/bin/rexx", 0xFFBFFABC, 0xFFBFFAC8) argc = 2 > > resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12 > > resolvepath("/opt/sfw/bin/rexx", "/opt/sfw/bin/rexx", 1023) = 17 > > stat("/opt/sfw/bin/rexx", 0xFFBFF898) = 0 > > open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT > > stat("/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/local/lib/librexx.so.3", 0xFFBFF3B8) Err#2 ENOENT > > stat("/opt/sfw/lib/ooRexx/librexx.so.3", 0xFFBFF3B8) = 0 > > resolvepath("/opt/sfw/lib/ooRexx/librexx.so.3", > > "/opt/sfw/lib/ooRexx/librexx.so.3.0.2", 1023) = 36 > > open("/opt/sfw/lib/ooRexx/librexx.so.3", O_RDONLY) = 3 > > mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) > > = 0xFF3A0000 > > mmap(0x00010000, 1179648, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF200000 > > mmap(0xFF200000, 953281, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF200000 > > mmap(0xFF2F8000, 153456, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 950272) = 0xFF2F8000 > > mmap(0xFF31E000, 7704, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF31E000 > > munmap(0xFF2EA000, 57344) = 0 > > memcntl(0xFF200000, 347856, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/local/lib/librexxapi.so.3", 0xFFBFF3B8) Err#2 ENOENT > > stat("/opt/sfw/lib/ooRexx/librexxapi.so.3", 0xFFBFF3B8) = 0 > > resolvepath("/opt/sfw/lib/ooRexx/librexxapi.so.3", > > "/opt/sfw/lib/ooRexx/librexxapi.so.3.0.2", 1023) = 39 > > open("/opt/sfw/lib/ooRexx/librexxapi.so.3", O_RDONLY) = 3 > > mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF3A0000 > > mmap(0x00010000, 114688, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF380000 > > mmap(0xFF380000, 41040, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF380000 > > mmap(0xFF39A000, 4392, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 40960) = 0xFF39A000 > > munmap(0xFF38C000, 57344) = 0 > > memcntl(0xFF380000, 10396, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/opt/sfw/lib/ooRexx/libstdc++.so.5", 0xFFBFF3B8) = 0 > > resolvepath("/opt/sfw/lib/ooRexx/libstdc++.so.5", > > "/opt/sfw/lib/ooRexx/libstdc++.so.5.0.5", 1023) = 38 > > open("/opt/sfw/lib/ooRexx/libstdc++.so.5", O_RDONLY) = 3 > > mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF3A0000 > > mmap(0x00010000, 573440, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF100000 > > mmap(0xFF100000, 417816, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF100000 > > mmap(0xFF176000, 82500, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 417792) = 0xFF176000 > > munmap(0xFF168000, 57344) = 0 > > mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF370000 > > memcntl(0xFF100000, 184988, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/libdl.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/lib/libdl.so.1", "/lib/libdl.so.1", 1023) = 15 > > open("/lib/libdl.so.1", O_RDONLY) = 3 > > mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF3A0000 > > close(3) = 0 > > stat("/lib/libpthread.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/lib/libpthread.so.1", "/lib/libpthread.so.1", 1023) = 20 > > open("/lib/libpthread.so.1", O_RDONLY) = 3 > > mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) > > = 0xFF360000 > > mmap(0x00002000, 16384, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF368000 > > mmap(0xFF368000, 12032, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF368000 > > close(3) = 0 > > stat("/lib/librt.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/lib/librt.so.1", "/lib/librt.so.1", 1023) = 15 > > open("/lib/librt.so.1", O_RDONLY) = 3 > > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF360000 > > mmap(0x00010000, 98304, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF340000 > > mmap(0xFF340000, 22142, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF340000 > > mmap(0xFF356000, 1710, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 24576) = 0xFF356000 > > munmap(0xFF346000, 65536) = 0 > > memcntl(0xFF340000, 9440, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/libm.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/lib/libm.so.1", "/lib/libm.so.1", 1023) = 14 > > open("/lib/libm.so.1", O_RDONLY) = 3 > > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF360000 > > mmap(0x00010000, 81920, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1E0000 > > mmap(0xFF1E0000, 14536, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1E0000 > > mmap(0xFF1F2000, 6856, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 8192) = 0xFF1F2000 > > munmap(0xFF1E4000, 57344) = 0 > > memcntl(0xFF1E0000, 6436, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/local/lib/libgcc_s.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/usr/local/lib/libgcc_s.so.1", > > "/usr/local/lib/libgcc_s.so.1", 1023) = 28 > > open("/usr/local/lib/libgcc_s.so.1", O_RDONLY) = 3 > > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF360000 > > mmap(0x00010000, 106496, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1C0000 > > mmap(0xFF1C0000, 34112, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1C0000 > > mmap(0xFF1D8000, 3532, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 32768) = 0xFF1D8000 > > munmap(0xFF1CA000, 57344) = 0 > > memcntl(0xFF1C0000, 6536, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/libc.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14 > > open("/lib/libc.so.1", O_RDONLY) = 3 > > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF360000 > > mmap(0x00010000, 991232, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF000000 > > mmap(0xFF000000, 882285, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF000000 > > mmap(0xFF0E8000, 29469, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 884736) = 0xFF0E8000 > > mmap(0xFF0F0000, 2592, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF0F0000 > > munmap(0xFF0D8000, 65536) = 0 > > memcntl(0xFF000000, 139784, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/local/lib/libstdc++.so.5", 0xFFBFF3B8) Err#2 ENOENT > > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/usr/lib/libgcc_s.so.1", 0xFFBFF3B8) Err#2 ENOENT > > stat("/lib/libaio.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/lib/libaio.so.1", "/lib/libaio.so.1", 1023) = 16 > > open("/lib/libaio.so.1", O_RDONLY) = 3 > > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF360000 > > mmap(0x00010000, 106496, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1A0000 > > mmap(0xFF1A0000, 31852, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1A0000 > > mmap(0xFF1B8000, 1978, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 32768) = 0xFF1B8000 > > munmap(0xFF1A8000, 65536) = 0 > > memcntl(0xFF1A0000, 5980, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > stat("/lib/libmd5.so.1", 0xFFBFF3B8) = 0 > > resolvepath("/lib/libmd5.so.1", "/lib/libmd5.so.1", 1023) = 16 > > open("/lib/libmd5.so.1", O_RDONLY) = 3 > > mmap(0xFF360000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) > > = 0xFF360000 > > mmap(0x00010000, 81920, PROT_NONE, > > MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFE0000 > > mmap(0xFEFE0000, 5312, PROT_READ|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEFE0000 > > mmap(0xFEFF2000, 416, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 8192) = 0xFEFF2000 > > munmap(0xFEFE2000, 65536) = 0 > > mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF330000 > > memcntl(0xFEFE0000, 908, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 > > close(3) = 0 > > munmap(0xFF360000, 8192) = 0 > > mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, > > MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFD0000 > > getcontext(0xFFBFF590) > > getrlimit(RLIMIT_STACK, 0xFFBFF570) = 0 > > getpid() = 17615 [17614] > > setustack(0xFEFD2088) > > sysconfig(_CONFIG_SEM_VALUE_MAX) = 2147483647 > > sysconfig(_CONFIG_STACK_PROT) = 7 > > stat("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", 0xFFBFEC30) = 0 > > resolvepath("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", > > "/platform/sun4u-us3/lib/libc_psr.so.1", 1023) = 37 > > open("/platform/SUNW,Sun-Fire-V490/lib/libc_psr.so.1", O_RDONLY) = 3 > > mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) > > = 0xFEFC0000 > > close(3) = 0 > > getcwd("/usr/local/apache2/cgi-bin", 1025) = 0 > > getuid() = 60001 [60001] > > brk(0x000210A0) = 0 > > brk(0x000230A0) = 0 > > open64("/var/run/name_service_door", O_RDONLY) = 3 > > fcntl(3, F_SETFD, 0x00000001) = 0 > > door_info(3, 0xFF0EF7E8) = 0 > > door_call(3, 0xFFBFD2E8) = 0 > > Incurred fault #6, FLTBOUNDS %pc = 0xFF030C50 > > siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 > > Received signal #11, SIGSEGV [default] > > siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000 > > > > Any ideas? > > > > Thanks, > > -P > > > > > > > > > > On Jan 15, 2008 4:14 PM, David Ashley <da...@us...> wrote: > > > > > Paul - > > > > > > Just because you can run a script as the Apache user does NOT mean > > > that user has the same environment as the Apache run time. The start up > > > script for Apache on Linux typically modifies the shred library path to a > > > subset of what any user would have. This is a security measure imposed by > > > the OS to prevent unknown shared libraries from being available. For > > > instance, my Linux system includes the /usr/share/lib subdir in the library > > > path for ALL users but Apache does not have this subdir in its library path. > > > This is typically the case for all system services including Apache. It has > > > nothing to do with the user the process is owned by. > > > > > > Thanks, > > > W. David Ashley > > > IBM Systems and Technology Group Lab Services > > > Open Object Rexx Team > > > Mobile Phone: 512-289-7506 > > > > > > > > > > > > ------------------------------------------------------------------------- > > > This SF.net email is sponsored by: Microsoft > > > Defy all challenges. Microsoft(R) Visual Studio 2008. > > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > > _______________________________________________ > > > Oorexx-users mailing list > > > Oor...@li... > > > https://lists.sourceforge.net/lists/listinfo/oorexx-users > > > > > > > > > |