Menu

MAC: STAF command hangs when saved to a file

Help
2011-09-05
2013-06-12
  • Eyal Teutsch

    Eyal Teutsch - 2011-09-05

    Hi,

    For some reason on a certain MAC machine we use (Darwin Kernel Version 10.8.0, 32bit, STAF 3.4.6), saving a command that includes our php into a file and then attempting to execute the file, causes STAF to hang.

    that is:

    /usr/local/zend/bin/php -v - works fine from the cmdline
    STAF local PROCESS START SHELL COMMAND "/usr/local/zend/bin/php -v" WAIT 60m RETURNSTDOUT RETURNSTDERR - works fine
    

    BUT, saving this cmd into say /tmp/bad (+ chmod 777) , and then running:
    STAF local PROCESS START SHELL COMMAND "/tmp/bad" WAIT 60m RETURNSTDOUT RETURNSTDERR

    causes STAF to hang. This problem does not occur on a another MAC machine we use (Darwin Kernel Version 11.1.0, 64bit).

    Here's a dtruss of the cmd if it might be of help:

    root@admins-imac: ~ $ dtruss STAF local PROCESS START SHELL COMMAND "/tmp/bad" WAIT 60m RETURNSTDOUT RETURNSTDERR
    SYSCALL(args)        = return
    getpid(0x7FFF5FBFF2F0, 0x7FFFFFE00050, 0x0)      = 26033 0
    open_nocancel("/dev/urandom\0", 0x0, 0x0)        = 3 0
    read_nocancel(0x3, "\346\300\315\354d\256\212&\206 \330\245}{e\331\255\"S#\216W0\237\032\200|\206O\004\n\022U\245\260\356\306\300\027\006\225#\336\300\3528\323x\3765N5\330\224\"?|\321\312\224\377\270\275\314\001\037\204\034\021\226\275/\3513\203\200\231-p\360\340\241j[\312\347\263\235\337\3104\027\030\222S\267VH\362qR\361\031\004\245\226\320P\0", 0x6C)       = 108 0
    close_nocancel(0x3)      = 0 0
    issetugid(0x100000000, 0x7FFF5FBFF668, 0x7FFF5FC40530)       = 0 0
    geteuid(0x100000000, 0x7FFF5FBFF668, 0x0)        = 0 0
    __sysctl(0x7FFF5FBFD1E0, 0x2, 0x7FFF5FBFD1A0)        = 0 0
    __sysctl(0x7FFF5FBFD1A0, 0x2, 0x7FFF5FBFD23C)        = 0 0
    shared_region_check_np(0x7FFF5FBFD3A8, 0x0, 0x7FFF5FC1DC86)      = 0 0
    stat64("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x7FFF5FBFC7B0, 0x7FFF5FBFCDF0)         = 0 0
    open("/usr/lib/dtrace/libdtrace_dyld.dylib\0", 0x0, 0x0)         = 3 0
    pread(0x3, "\312\376\272\276\0", 0x1000, 0x0)        = 4096 0
    pread(0x3, "\317\372\355\376\a\0", 0x1000, 0x1000)       = 4096 0
    mmap(0x100015000, 0x2000, 0x5, 0x12, 0x3, 0x7FFF00000001)        = 0x15000 0
    mmap(0x100017000, 0x1000, 0x3, 0x12, 0x3, 0x7FFF00000001)        = 0x17000 0
    mmap(0x100018000, 0x1F10, 0x1, 0x12, 0x3, 0x7FFF00000001)        = 0x18000 0
    close(0x3)       = 0 0
    stat64("/usr/local/zend/lib/libSystem.B.dylib\0", 0x7FFF5FBFC8E0, 0x7FFF5FBFCB70)        = -1 Err#2
    stat64("/usr/local/zend/apache2/lib/libSystem.B.dylib\0", 0x7FFF5FBFC8D0, 0x7FFF5FBFCB70)        = -1 Err#2
    stat64("/usr/lib/libSystem.B.dylib\0", 0x7FFF5FBFC8F0, 0x7FFF5FBFCB70)       = 0 0
    stat64("/usr/local/zend/lib/libSTAF.dylib\0", 0x7FFF5FBFC8E0, 0x7FFF5FBFCB70)        = -1 Err#2
    stat64("/usr/local/zend/apache2/lib/libSTAF.dylib\0", 0x7FFF5FBFC8E0, 0x7FFF5FBFCB70)        = -1 Err#2
    stat64("/usr/lib/libSTAF.dylib\0", 0x7FFF5FBFC8F0, 0x7FFF5FBFCB70)       = -1 Err#2
    stat64("/usr/lib/libSTAF.dylib\0", 0x7FFF5FBFC8F0, 0x7FFF5FBFCB70)       = -1 Err#2
    stat64("/libSTAF.dylib\0", 0x7FFF5FBFC8F0, 0x7FFF5FBFCB70)       = -1 Err#2
    stat64("/Library/staf/lib/libSTAF.dylib\0", 0x7FFF5FBFC8E0, 0x7FFF5FBFCB70)      = 0 0
    open("/Library/staf/lib/libSTAF.dylib\0", 0x0, 0x0)      = 3 0
    pread(0x3, "\312\376\272\276\0", 0x1000, 0x0)        = 4096 0
    pread(0x3, "\317\372\355\376\a\0", 0x1000, 0xAE000)      = 4096 0
    mmap(0x10001A000, 0x74000, 0x5, 0x12, 0x3, 0x7FFF00000001)       = 0x1A000 0
    mmap(0x10008E000, 0x2000, 0x3, 0x12, 0x3, 0x7FFF00000001)        = 0x8E000 0
    mmap(0x100090000, 0x40980, 0x1, 0x12, 0x3, 0x7FFF00000001)       = 0x90000 0
    fcntl(0x3, 0x2C, 0x7FFF5FBFAB10)         = 0 0
    close(0x3)       = 0 0
    stat64("/usr/local/zend/lib/libstdc++.6.dylib\0", 0x7FFF5FBFC8E0, 0x7FFF5FBFCB70)        = -1 Err#2
    stat64("/usr/local/zend/apache2/lib/libstdc++.6.dylib\0", 0x7FFF5FBFC8D0, 0x7FFF5FBFCB70)        = -1 Err#2
    stat64("/usr/lib/libstdc++.6.dylib\0", 0x7FFF5FBFC8F0, 0x7FFF5FBFCB70)       = 0 0
    stat64("/usr/local/zend/lib/libmathCommon.A.dylib\0", 0x7FFF5FBFC790, 0x7FFF5FBFCA20)        = -1 Err#2
    stat64("/usr/local/zend/apache2/lib/libmathCommon.A.dylib\0", 0x7FFF5FBFC780, 0x7FFF5FBFCA20)        = -1 Err#2
    stat64("/usr/lib/libmathCommon.A.dylib\0", 0x7FFF5FBFC790, 0x7FFF5FBFCA20)       = -1 Err#2
    stat64("/usr/lib/libmathCommon.A.dylib\0", 0x7FFF5FBFC790, 0x7FFF5FBFCA20)       = -1 Err#2
    stat64("/libmathCommon.A.dylib\0", 0x7FFF5FBFC7A0, 0x7FFF5FBFCA20)       = -1 Err#2
    stat64("/Library/staf/lib/libmathCommon.A.dylib\0", 0x7FFF5FBFC790, 0x7FFF5FBFCA20)      = -1 Err#2
    stat64("/Library/staf/lib/libmathCommon.A.dylib\0", 0x7FFF5FBFC790, 0x7FFF5FBFCA20)      = -1 Err#2
    stat64("/usr/lib/system/libmathCommon.A.dylib\0", 0x7FFF5FBFC3E0, 0x7FFF5FBFCA20)        = 0 0
    madvise(0x7FFF8AB53000, 0x2000, 0x5)         = 0 0
    open("/dev/dtracehelper\0", 0x2, 0x7FFF5FC45448)         = 3 0
    ioctl(0x3, 0x80086804, 0x7FFF5FBFD140)       = 0 0
    close(0x3)       = 0 0
    __sysctl(0x7FFF5FBFD030, 0x2, 0x7FFF5FBFD020)        = 0 0
    bsdthread_register(0x7FFF87F3FE7C, 0x7FFF87F20A98, 0x2000)       = 0 0
    thread_selfid(0x7FFF87F3FE7C, 0x7FFF87F20A98, 0x0)       = 96289 0
    open_nocancel("/dev/urandom\0", 0x0, 0x7FFF70F5EC00)         = 3 0
    read_nocancel(0x3, "\036V\342\351\024'o\025)\334\311\200\260\3056\345e\006\241\200\251\307z\341)\356\253M\3605\240,}\022V\222\341a^\201a\2321%\231\234\250\325\222\343\256\253KF,\271\220\252\267\024{|\026S\0", 0x40)       = 64 0
    close_nocancel(0x3)      = 0 0
    mmap(0x0, 0x3000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001)        = 0xD1000 0
    __sysctl(0x7FFF5FBFCEB0, 0x2, 0x7FFF5FBFCE70)        = 0 0
    __sysctl(0x7FFF5FBFCE70, 0x2, 0x7FFF5FBFCF08)        = 0 0
    getpid(0x7FFF5FBFCE00, 0x7FFFFFE00050, 0x0)      = 26033 0
    open_nocancel("/dev/urandom\0", 0x0, 0x0)        = 3 0
    read_nocancel(0x3, "\375F\364\310\221, \356\367\005\0063\035\250\255\034\2327/8@/\031\213\256\032r2Q\\\321\026\327b)<[\247E +b8Ye\341\272e\300:o\037\032\323\370\340\312\b\310\276%\266_\330\\X*cF\005x\312\367\356\207\345\020\323R`\252\032\315\356Qs\225\203\020P-\323OGx\207@\322\226Q\255 ?\200\305\023i\266\0", 0x6C)      = 108 0
    close_nocancel(0x3)      = 0 0
    __sysctl(0x7FFF5FBFCEB0, 0x2, 0x7FFF5FBFCEDC)        = 0 0
    mmap(0x0, 0x17000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001)       = 0xD4000 0
    mmap(0x0, 0x17000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001)       = 0xEB000 0
    mmap(0x0, 0x1000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001)        = 0x102000 0
    mmap(0x0, 0x200000, 0x3, 0x1002, 0x7000000, 0x7FFF00000001)      = 0x103000 0
    munmap(0x100103000, 0xFD000)         = 0 0
    munmap(0x100300000, 0x3000)      = 0 0
    __sysctl(0x7FFF5FBFD010, 0x2, 0x7FFF5FBFCFD0)        = 0 0
    __sysctl(0x7FFF5FBFCFD0, 0x2, 0x7FFF70F6B7A0)        = 0 0
    __sysctl(0x7FFF5FBFD010, 0x2, 0x7FFF5FBFCFD0)        = 0 0
    __sysctl(0x7FFF5FBFCFD0, 0x2, 0x7FFF70F6B7A4)        = 0 0
    __sysctl(0x7FFF5FBFD010, 0x2, 0x7FFF5FBFCFD0)        = 0 0
    __sysctl(0x7FFF5FBFCFD0, 0x2, 0x7FFF70F6B7A8)        = 0 0
    mmap(0x0, 0x3000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001)        = 0x103000 0
    __sysctl(0x7FFF5FBFCFE0, 0x2, 0x7FFF5FBFCFA0)        = 0 0
    __sysctl(0x7FFF5FBFCFA0, 0x2, 0x7FFF5FBFD038)        = 0 0
    __sysctl(0x7FFF5FBFCFE0, 0x2, 0x7FFF5FBFD00C)        = 0 0
    mmap(0x0, 0x17000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001)       = 0x106000 0
    mmap(0x0, 0x17000, 0x3, 0x1002, 0x1000000, 0x7FFF00000001)       = 0x11D000 0
    mmap(0x0, 0x200000, 0x3, 0x1002, 0x7000000, 0x7FFF00000001)      = 0x300000 0
    munmap(0x100400000, 0x100000)        = 0 0
    recvfrom(0x6, 0x100802618, 0x4)      = 4 0
    sendto(0x6, 0x100802618, 0x4)        = 4 0
    sendto(0x6, 0x100802618, 0x4)        = 4 0
    sendto(0x6, 0x100802618, 0xB)        = 11 0
    recvfrom(0x6, 0x100802618, 0x4)      = 4 0
    recvfrom(0x6, 0x100802618, 0x4)      = 4 0
    close(0x6)       = 0 0
    socket(0x1, 0x1, 0x0)        = 6 0
    fcntl(0x6, 0x1, 0x5FBFD9CC)      = 0 0
    fcntl(0x6, 0x2, 0x1)         = 0 0
    fcntl(0x6, 0x3, 0x0)         = 2 0
    fcntl(0x6, 0x4, 0x6)         = 0 0
    connect(0x6, 0x7FFF5FBFE9F0, 0x6A)       = 0 0
    fcntl(0x6, 0x3, 0x0)         = 6 0
    fcntl(0x6, 0x4, 0x2)         = 0 0
    sendto(0x6, 0x100802618, 0x8)        = 8 0
    recvfrom(0x6, 0x100802618, 0x4)      = 4 0
    sendto(0x6, 0x100802618, 0x63)       = 99 0
    mmap(0x0, 0x1000000, 0x3, 0x1002, 0x2000000, 0x100000000)        = 0x400000 0
    munmap(0x100400000, 0x400000)        = 0 0
    munmap(0x101000000, 0x400000)        = 0 0
    dup(0x2, 0x17, 0x2)      = 3 0
    dup(0x1, 0x17, 0x0)      = 4 0
    dup(0x0, 0x17, 0x0)      = 5 0
    getgid(0x0, 0x17, 0x0)       = 0 0
    getuid(0x0, 0x17, 0x0)       = 0 0
    getrlimit(0x1008, 0x7FFF5FBFC290, 0x7FFF87F0A2EC)        = 0 0
    open_nocancel("/Library/staf/codepage/alias.txt\0", 0x0, 0x1B6)      = 6 0
    read(0x6, "#This is an alias file used by the character set converter\n#format:\n#Actual File Name || Algorithm name     alias1 alias2 ...\n#except for column1(file names) case insensitive\n\n# Algorithmic: DO NOT CHANGE LEFT COLUMN OF ALGORITHMIC CONVERTERS\nUTF8         ", 0x3FF)       = 1023 0
    read(0x6, "in2 iso-ir-101 iso_8859-2:1987  # Central Europe\nibm-913         iso-8859-3 iso_8859-3 latin3 cp913 ibm913 8859-3 csisolatin3 iso-ir-109 iso_8859-3:1988  # Maltese Esperanto\nibm-914         iso-8859-4 iso_8859-4 latin4 cp914 ibm914 8859-4 csisolatin4 iso-i", 0x3FF)       = 1023 0
    read(0x6, "iso_8859-15 iso8859-15 latin9 cp923 ibm923 8859-15 latin0 csisolatin0 csisolatin9       # Latin 9\nibm-1252        windows-1252  cp1252  ibm-1004 cp1004        # Windows Latin 1\nibm-943         shift_jis sjis shiftjis shift-jis ibm943 cp943 ibm-932 ibm-932 ", 0x3FF)       = 1023 0
    read(0x6, "49 ksc korean                              # Korean KSC\nibm-1383        euc-cn euccn ibm-eucCN                       # China EUC\n#ibm-1162          tis-620  cp874 windows-874 ms874       # Thai (w/ euro support)\nibm-874\t #same as 1162 (w/o euro update)\n\n# ", 0x3FF)       = 1023 0
    read(0x6, "\t\t# PC Hebrew (w/o euro update)\nibm-863         ibm863 cp863            # PC Canadian French\nibm-17248\tcp864            # PC Arabic (w/ euro update)\nibm-864\t\t# PC Arabic (w/o euro update)\nibm-865         ibm865 cp865            # PC Nordic\nibm-808\t\tcp866  ", 0x3FF)         = 1023 0
    read(0x6, "53    # Windows Greek (w/ euro update)\nibm-5350        windows-1254  cp1254    # Windows Turkish (w/ euro update)\nibm-5351        windows-1255  cp1255    # Windows Hebrew (w/ euro update)\nibm-5352        windows-1256  cp1256    # Windows Arabic (w/ euro up", 0x3FF)      = 1023 0
    read(0x6, "-1282        macce                   # Apple Central Europe\nibm-1283        maccy                   # Apple Cyrillic\nibm-834         #Korean Host DBCS\n# EBCDIC codepages\n\nibm-16804  ibm-420         ebcdic-ar  cp420        # EBCDIC Arabic (w/ euro update)\ni", 0x3FF)       = 1023 0
    read(0x6, "73        # EBCDIC Germanay, Austria... (w/ euro update)\nibm-1142        ebcdic-dk  cp277        # EBCDIC Denmark... (w/ euro update)\nibm-1143        ebcdic-sv  cp278        # EBCDIC Sweden (w/ euro update)\nibm-1144        ebcdic-it   cp280        # EBCDIC", 0x3FF)      = 1023 0
    read(0x6, "1\t       # EBCDIC Iceland (w/o euro update)\n# Added for more euro support\nibm-1149        ebcdic-is  cp871        # EBCDIC Iceland (w/ euro update)\nibm-1154\tcp1025\t\t\t# EBCDIC Cyrillic Multilingual (w/ euro update)\nibm-1153\tcp870\t\t\t\t# EBCDIC latin 2 (w/ eur", 0x3FF)       = 1023 0
    read(0x6, " euro update)\nibm-1399\tcp939\t\t\t# Host MBCS (Latin-Kanji) (w/ euro update)\nibm-4930\tcp4930\t\t\t# Korean DBCS Host (w/ euro update)\nibm-1364\tcp1364\t       # Korean Host Mixed (w/ euro update)\nibm-1362\tcp1362\t       # Korean Windows DBCS (w/ euro update)\nibm-13", 0x3FF)        = 669 0
    read(0x6, "\0", 0x3FF)       = 0 0
    close_nocancel(0x6)      = 0 0
    stat64("/usr/local/zend/lib/libSTAFLIPC.dylib\0", 0x7FFF5FBFE0C0, 0x7FFF5FBFE350)        = -1 Err#2
    stat64("/usr/local/zend/apache2/lib/libSTAFLIPC.dylib\0", 0x7FFF5FBFE0B0, 0x7FFF5FBFE350)        = -1 Err#2
    stat64("/usr/lib/libSTAFLIPC.dylib\0", 0x7FFF5FBFE0D0, 0x7FFF5FBFE350)       = -1 Err#2
    stat64("/usr/lib/libSTAFLIPC.dylib\0", 0x7FFF5FBFE0D0, 0x7FFF5FBFE350)       = -1 Err#2
    stat64("/libSTAFLIPC.dylib\0", 0x7FFF5FBFE0D0, 0x7FFF5FBFE350)       = -1 Err#2
    stat64("/Library/staf/lib/libSTAFLIPC.dylib\0", 0x7FFF5FBFE0C0, 0x7FFF5FBFE350)      = 0 0
    open("/Library/staf/lib/libSTAFLIPC.dylib\0", 0x0, 0x0)      = 6 0
    pread(0x6, "\312\376\272\276\0", 0x1000, 0x0)        = 4096 0
    pread(0x6, "\317\372\355\376\a\0", 0x1000, 0x10000)      = 4096 0
    mmap(0x100134000, 0xB000, 0x5, 0x12, 0x6, 0x100000000)       = 0x134000 0
    mmap(0x10013F000, 0x1000, 0x3, 0x12, 0x6, 0x100000000)       = 0x13F000 0
    mmap(0x100140000, 0x2E30, 0x1, 0x12, 0x6, 0x100000000)       = 0x140000 0
    close(0x6)       = 0 0
    socket(0x1, 0x1, 0x0)        = 6 0
    fcntl(0x6, 0x1, 0x5FBFDAFC)      = 0 0
    fcntl(0x6, 0x2, 0x1)         = 0 0
    fcntl(0x6, 0x3, 0x0)         = 2 0
    fcntl(0x6, 0x4, 0x6)         = 0 0
    connect(0x6, 0x7FFF5FBFEB20, 0x6A)       = 0 0
    fcntl(0x6, 0x3, 0x0)         = 6 0
    fcntl(0x6, 0x4, 0x2)         = 0 0
    sendto(0x6, 0x100802618, 0x4)        = 4 0
    sendto(0x6, 0x100802618, 0x4)        = 4 0
    
     
  • Eyal Teutsch

    Eyal Teutsch - 2011-09-05

    Forgot to mention that other commands I place in such file for work, such as 'date -u' (or even executing 'php -v' using the php binary provided by apple).

     
  • Sharon Lucas

    Sharon Lucas - 2011-09-06

    What do you mean by this causes STAF to hang?  Do you mean that the STAF PROCESS START request never completes? 

    Are you sure that the file you are running via the STAF PROCESS START command has been closed?

    Does adding option STDIN and specifying the name of a file that you create that contains nothing resolve the problem?  For example:

    touch /tmp/empty.txt

    STAF local PROCESS START SHELL COMMAND /tmp/bad RETURNSTDOUT RETURNSTDERR STDIN /tmp/emptry.txt WAIT

     
  • Eyal Teutsch

    Eyal Teutsch - 2011-09-07

    By hang I meant that STAF does not return any output given a reasonable timeout.
    Indeed, adding the STDIN /tmp/empty.txt bit seems to workaround the problem - thx !

     

Log in to post a comment.

MongoDB Logo MongoDB