Xcode可执行包资源无法与沙箱一起使用,无法写入“ MODULE”文件;节流

时间:2019-02-28 14:43:40

标签: c xcode macos cocoa sandbox

在我的Cocoa应用程序中,有一个由我签名的二进制可执行资源,该资源可在沙箱中运行。但是,它无法成功运行,并且当我在应用程序外部运行此调用时,其stderr中没有素材。我正在运行的程序称为tbl2asn,由美国政府提供,并且源代码可用。该程序与其他程序一起被编译为生物学数据库的一部分。

为了完整起见,这是我正在使用的确切电话, tbl2asn -V v -a l1 -t inputfile1 -i inputfile2 -o outputfile

它最终会生成三个文件,一个是由-o给出的文件,另一个是由于-V v标志而在程序运行目录中的两个文件。

我告诉Xcode将-o文件写入一个NSTemporaryDirectory(),在沙箱打开的情况下其他文件可以成功写入,但是在沙箱打开的情况下它没有写我想要的文件。由于在没有-V v的情况下,该过程在应用程序中失败相同(这肯定会导致尝试将文件写入资源所在的位置),因此,我认为有一些尝试的I / O进入了不允许的位置。

在应用程序外部,当运行tbl2asn时,仅将几个不重要的通知打印到stderr,但是在应用程序内部,当我从tbl2asn调用传递stderr时,这就是我看到的,

2019-02-28 05:35:47.793894-0800 tbl2asn[67411:9510814] WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.0 instead of 10.14.0. This is not a bug in Gestalt -- it is a documented limitation. Use NSProcessInfo's operatingSystemVersion property to get correct system version number.
Call location:
2019-02-28 05:35:47.796781-0800 tbl2asn[67411:9510814] 0   CarbonCore                          0x00007fff3a2a5464 ___Gestalt_SystemVersion_block_invoke + 112
2019-02-28 05:35:47.796797-0800 tbl2asn[67411:9510814] 1   libdispatch.dylib                   0x000000010073a7f3 _dispatch_client_callout + 8
2019-02-28 05:35:47.796808-0800 tbl2asn[67411:9510814] 2   libdispatch.dylib                   0x000000010073c4bb _dispatch_once_callout + 87
2019-02-28 05:35:47.796819-0800 tbl2asn[67411:9510814] 3   CarbonCore                          0x00007fff3a246665 _Gestalt_SystemVersion + 946
2019-02-28 05:35:47.796829-0800 tbl2asn[67411:9510814] 4   CarbonCore                          0x00007fff3a23fae8 Gestalt + 147
2019-02-28 05:35:47.796840-0800 tbl2asn[67411:9510814] 5   tbl2asn                             0x000000010037a806 Nlm_GetOpSysString + 22
2019-02-28 05:35:47.796850-0800 tbl2asn[67411:9510814] 6   tbl2asn                             0x0000000100002a63 Nlm_Main + 6163

已删除:dtruss输出。


更新:我已经查明了问题所在,但我不知道发生了什么。

简介:检查沙盒内外的fs_usage发现了这种差异:

在沙箱中,打开失败,并且对toasn3.msg的事件不会发生后续的写调用。在沙盒运行的fs_usage输出中,它显示为THROTTLED;这是非沙盒通话所没有的,相反,它有很多这样的行,

22:52:23.615921  write             F=4    B=0x1000                                                                                                                                                        
                    0.000023   tbl2asn.2073266

在其中对toasn3.msg进行写调用,这里的ID为tbl2asn.2073266

这是失败的沙盒运行尝试fs_usage

22:38:36.043193  stat64                 [  2]           toasn3.msg                                                                                                                                                            0.000008   tbl2asn.2070594
22:38:36.043203  open                   [  2] (R_____)  toasn3.msg                                                                                                                                                            0.000007   tbl2asn.2070594
22:38:36.060833    THROTTLED                                                                                                                                                                                                  0.200916   mds_stores.2069534
22:38:36.060834  PAGE_IN_FILE      A=0x0104af5000                                                                                                                                                                             0.201197   mds_stores.2069534
22:38:36.061164    PgIn[AT3P]      D=0x01faa58e  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000279 W mds_stores.2069534
22:38:36.061165    PgIn[AT3P]      D=0x01fab2ed  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000224 W mds_stores.2069534
22:38:36.061169    PgIn[AT3P]      D=0x01fa9eca  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000208 W mds_stores.2069534
22:38:36.061187    PgIn[AT3P]      D=0x0060614d  B=0x1000   /dev/disk1s1  /.Spotlight-V100/Store-V2/C6256897-E180-4650-85BD-78E01145E16F/reverseDirectoryStore                                                                0.000211 W mds_stores.2069534
22:38:36.091770  ioctl             F=2  [ 25] <CMD=0x4004667a>                                                                                                                                                                0.000003   tbl2asn.2070594
22:38:36.091772  ioctl             F=2  [ 25] <CMD=0x40487413>                                                                                                                                                                0.000001   tbl2asn.2070594
22:38:36.091791  write             F=2    B=0x25                                                                                                                                                                              0.000005   tbl2asn.2070594
22:38:36.091794  ioctl             F=0   <CMD=0x4004667a>                                                                                                                                                                     0.000003   tbl2asn.2070594
22:38:36.091798  ioctl             F=2  [ 25] <CMD=0x4004667a>                                                                                                                                                                0.000001   tbl2asn.2070594
22:38:36.091799  ioctl             F=2  [ 25] <CMD=0x40487413>                                                                                                                                                                0.000001   tbl2asn.2070594
22:38:36.091802  write             F=2    B=0x25                                                                                                                                                                              0.000001   tbl2asn.2070594
22:38:36.091804  ioctl             F=0   <CMD=0x4004667a>                                                                                                                                                                     0.000001   tbl2asn.2070594
22:38:36.091859  open                   [  2] (_WC_T_)  private/var/folders/8m/bqlpqcq17x1_mgjkg81s2grw0000gn/T/1D6BF273-0837-427B-BA21-ACDB6A2C514D-4072-00001FC00236C89B>>>>>>                                              0.000049   tbl2asn.2070594
22:38:36.092838  close             F=3                                                                                                                                                                                        0.000010   tbl2asn.2070594
22:38:36.094428  read              F=15   B=0x0                                                                                                                                                                               0.282789   SeqKing.2069951
22:38:36.094450  exit                                                                                                                                                                                                         0.000059   tbl2asn.2070594

这是toasn3.msg的定义。这是什么东西?

MODULE toasn3
$$ ORGANISM, 1
$^   Empty, 1, SEV_WARNING
$^   NotFound, 2, SEV_WARNING
$^   Diff, 3, SEV_WARNING
$$ SOURCE, 2
$^   MultipleQualifiers, 1, SEV_WARNING
$^   DiffQualifiers, 2, SEV_WARNING
$^   Identical, 3, SEV_WARNING
$^   NotFound, 4, SEV_WARNING
$^   GeneticCode, 5, SEV_WARNING
$^   UnwantedQualifiers, 6, SEV_WARNING
$^   MissingOrganism, 7, SEV_WARNING
$^   NotFoundWHole, 9, SEV_WARNING
$^   Multiple, 10, SEV_WARNING
$^   Diff, 11, SEV_WARNING
$^   QualDiffValues, 12, SEV_WARNING
$^   IllegalQual, 13, SEV_WARNING
$^   QualUnknown, 14, SEV_INFO
$$ TAXONOMY, 4
$^   GeneticCode, 1, SEV_ERROR
$$ FEATURE, 5
$^   CannotMapDnaLocToAALoc, 1, SEV_ERROR
$^   BadLocation, 2, SEV_WARNING
$^   CDSNotFound, 3, SEV_WARNING

0 个答案:

没有答案
相关问题