标签: mach

等待锁定工件缓存(/path/to/.gradle/caches/modules-2)的超时。当前由另一个Gradle实例使用

不知道这个问题是针对stackoverflow还是超级用户

编辑:超级用户甚至没有gradle标签,所以我猜这是为stackoverflow

嗨,我正在尝试运行./mach gradle app:test以测试Mozillas代码中的错误修复

当我运行它时,出现此错误

Timeout waiting to lock artifact cache (/home/mddrill/.gradle/caches/modules-2). It is currently in use by another Gradle instance.

我在运行时遇到相同的错误,./mach gradle app:checkstyle所以我想我可以通过and gradle命令来得到

我检查了运行的守护程序,service --status-all但是在那里没有gradle字样

我看过的其他问题有回答说要运行gradle --stop以检查守护程序是否正在运行。当我运行该命令时,它说Stopping daemon(s)并挂起

我怎样才能解决这个问题?我尝试关闭并重新打开终端。

mozilla gradle mach android-gradle-plugin

3
推荐指数
2
解决办法
5034
查看次数

在 iOS (objective-C) 中将 mach_absolute_time 转换为(纳)秒

我正在尝试在 iOS 中编写一个辅助方法,以允许我使用mach_absolute_time()秒(或纳秒),以便我可以找到传入设备传感器数据的时间导数。这是我的尝试:

#include <mach/mach_time.h>

- (double) convertMachAbsoluteTimeIntoSeconds:(uint64_t) mach_time {
    mach_timebase_info_data_t _clock_timebase;
    double nanos = (mach_time * _clock_timebase.numer) / _clock_timebase.denom;
    return nanos / 1e9;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码正在编译,但我收到的当前警告是“‘*’的右操作数是垃圾值”。另外,在任何情况下它都不会返回合理的结果:/

从我读到的来看,mach_absolute_time()有一些特质,所以我认为让这个工作可能对其他人有用。

慷慨地接受了所有帮助!

iphone time objective-c ios mach

3
推荐指数
1
解决办法
2683
查看次数

给定 mach_header 我如何找到二进制图像名称?

我正在研究 Mach 动态链接器dyld。这个问题适用于所有 Apple 平台,但很高兴得到特定于平台的答案;我正在使用 ObjC,但如果对你有用的话,我也很乐意翻译 Swift。 相关的 Apple 文档可以在这里找到

我正在尝试解决我维护的库中的死锁问题,因此需要捕获有关加载的二进制图像的信息。(对于外行来说,这些不是 JPEG 类型的图像)。

我已经注册了一个回调来监视二进制图像添加_dyld_register_func_for_add_image(),并且在加载图像时调用该回调。我可以看到mach_header传入的结构以及vmaddr_slide值。

出于各种避免死锁的原因,我不想使用_dyld_image_count()/_dyld_get_image_header()事后迭代图像,而是希望仅使用add()/remove()回调来跟踪图像加载/卸载。通常,当我迭代图像时,我可以调用_dyld_get_image_name(index)来检索图像名称,但正如我所说,我无法使用迭代模型。

我的问题是:根据传入回调的值func_for_add_image()(使用任何必要的附加系统调用),我如何确定图像名称?

cocoa objective-c dyld ios mach

3
推荐指数
1
解决办法
1077
查看次数

pthread_kill 到 GCD 管理的线程

我正在尝试使用 向特定线程发送信号pthread_kill。我用来pthread_from_mach_thread_np()获取句柄,然后用来pthread_kill发送信号。

\n\n

这在我的其他测试中效果很好,但现在我发现当尝试向 GCD 内部创建的线程发出信号时,我从pthread_kill.

\n\n

生成该线程的 GCD API:

\n\n
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{ ... });\n
Run Code Online (Sandbox Code Playgroud)\n\n

发生这种情况有什么原因吗?

\n\n

\xe2\x80\x94-

\n\n

为了添加一些进一步的信息,我并没有试图杀死线程。pthread_kill()是向线程发送信号的标准 POSIX API。如果安装了信号处理程序,则 thread\xe2\x80\x99s 上下文将通过蹦床切换到处理程序。

\n\n

虽然我尝试使用信号处理程序实现的目标可以通过更好的方式实现,但这在这里不是问题。即使纯粹出于学术原因,我也想了解内部发生的情况。

\n

macos pthreads darwin grand-central-dispatch mach

2
推荐指数
1
解决办法
378
查看次数

使用 vm_read 和 vm_write 在 OS X 10.8.2 上读/写内存

这是我的代码,仅适用于 Xcode(版本 4.5):

\n\n
#include <stdio.h>\n#include <mach/mach_init.h>\n#include <mach/mach_vm.h>\n#include <sys/types.h>\n#include <mach/mach.h>\n#include <sys/ptrace.h>\n#include <sys/wait.h>\n#include <Security/Authorization.h>\n\nint main(int argc, const char * argv[]) {\n\n    char test[14]   = "Hello World! "; //0x7fff5fbff82a\n\n    char value[14]  = "Hello Hacker!";\n\n    char test1[14];\n\n    pointer_t buf;\n    uint32_t sz;\n\n    task_t task;\n\n    task_for_pid(current_task(), getpid(), &task);\n\n    if (vm_write(current_task(), 0x7fff5fbff82a, (pointer_t)value, 14) == KERN_SUCCESS) {\n\n        printf("%s\\n", test);\n        //getchar();\n    }\n\n    if (vm_read(task, 0x7fff5fbff82a, sizeof(char) * 14, &buf, &sz) == KERN_SUCCESS) {\n\n        memcpy(test1, (const void *)buf, sz);\n        printf("%s", test1);\n    }\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还尝试了 ptrace 和其他东西,这就是为什么我也包含其他库。 …

memory macos xcode ptrace mach

1
推荐指数
1
解决办法
4983
查看次数

设置复杂的 mach 消息头

我正在尝试设置一个 mach 消息,以便使用 mach IPC 发送一个字符串。但是,(ipc/send) invalid msg-header在尝试发送脱机消息时出现错误。

这是消息结构。

struct ool_msg
{
    mach_msg_header_t header;
    mach_msg_body_t body;
    mach_msg_ool_descriptor_t data;
    mach_msg_type_number_t count;
};
Run Code Online (Sandbox Code Playgroud)

我正在像这样设置标题。msg下面的变量是一个struct ool_msg.

hdr = &(msg.header);
hdr->msgh_bits = MACH_MSGH_BITS_LOCAL(MACH_MSG_TYPE_COPY_SEND);
hdr->msgh_bits |= MACH_MSGH_BITS_COMPLEX;
hdr->msgh_size = sizeof(msg);
hdr->msgh_local_port = MACH_PORT_NULL;
hdr->msgh_remote_port = port;
Run Code Online (Sandbox Code Playgroud)

这就是我设置 Mach 消息其余部分的方式。

msg.body.msgh_descriptor_count = 1;
msg.data.address = string;
msg.data.size = strlen(string) + 1;
msg.data.deallocate = FALSE;
msg.data.copy = MACH_MSG_VIRTUAL_COPY;
msg.data.type = MACH_MSG_OOL_DESCRIPTOR;
msg.count = msg.data.size;
Run Code Online (Sandbox Code Playgroud)

那么如何正确设置 OOL Mach IPC 的消息头呢?

编辑

这是一个重现我的问题的程序。 …

c macos ipc mach

1
推荐指数
1
解决办法
830
查看次数

启动产生新进程的流程

我正在研究launchd从plist文件下/Library/LaunchDaemons/或通过命令加载它的服务的方式launchctl load

到目前为止,我已经设法收集了一些不同的来源,并按照我的理解组成了以下模糊的图片:

在服务加载时 ( launchctl load) 进程launchctl向launchd发送一条适当的XPC消息,然后将launchd其分叉到具有上下文的新进程中xpcproxy。这个通用进程正在等待来自 的另一个 XPC 调用launchd以根据 launchDaemon plst 运行它的真实进程上下文。

这个解释听起来对吗?也许有人可以帮我使它更准确?

谢谢

macos xpc launchd mach

1
推荐指数
1
解决办法
455
查看次数