Mac-Hroot
Mac-Hroot copied to clipboard
Safari does not run on the created jail.
$ /Applications/Safari.app/Contents/MacOS/Safari Killed: 9
Running on MacOS 10.13. Darwin Kernel Version 17.0.0: Thu Aug 24 21:48:19 PDT 2017; root:xnu-4570.1.46~2/RELEASE_X86_64
Hi @gavaza! Thank you for reporting this. First I thought it is similar issue like the one described in README, but then after working around signal 9, I got following:
Barboras-MacBook-Pro:Mac-Hroot jajo$ sudo ./chroot.sh mac-jail/
mac-jail$ /Applications/Safari.app/Contents/MacOS/Safari
Segmentation fault: 11
In dmesg I see following messages:
ent[<ptr>]::removeBufferSet(<ptr>)
+ IOAudioStream[<ptr>]::removeClient(<ptr>)
+-IOAudioStream[<ptr>]::safeLogError kErrorLogDumpCounters mStreamErrorCountsUpdated=0
- IOAudioStream[<ptr>]::removeClient(<ptr>)
- IOAudioEngineUserClient::unregisterClientBuffer64 no sourcebuffer returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x0, arg0 0x0, arg1 0x10fde4000, arg2 0x8010 arg3 0x4f
scalarInputCount=0x4 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f
+ IOAudioEngineUserClient::safeRegisterClientBuffer64 <ptr>
+ IOAudioEngineUserClient[<ptr>]::registerClientBuffer64 (<ptr>[1], 0x10fde4000, 0x8010, 0x4f)
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
clientBuffer->mAudioClientBuffer32.sourceBuffer before offset: <ptr>, offset size: 16
clientBuffer->mAudioClientBuffer32.sourceBuffer after offset: <ptr>
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
creating new IOAudioClientBufferSet
output
!isOnline
- IOAudioEngineUserClient::registerClientBuffer64() result 0x0
- IOAudioEngineUserClient::safeRegisterClientBuffer64 returns 0x0
- IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x3, arg0 0x0, arg1 0x0, arg2 0x0 arg3 0x0
scalarInputCount=0x0 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient[<ptr>]::startClient() - 0
audioEngine && !isInactive(). State = 1
audioEngine->getState() != kIOAudioEnginePaused
+- IOAudioEngineUserClient[<ptr>]::setOnline(1)
!isOnline() setting online
+ IOAudioEngine[<ptr>]::startClient(<ptr>)
+ IOAudioEngine[<ptr>]::incrementActiveUserClients() - 0
+ IOAudioEngine[<ptr>]::startAudioEngine(state = 1)
- IOAudioEngine[<ptr>]::startAudioEngine() returns 0x0
- IOAudioEngine[<ptr>]::incrementActiveUserClients() - 1 returns 0
- IOAudioEngine[<ptr>]::startClient(<ptr>) returns 0x0
engine started
bufferSet <ptr>
output clientBuffer <ptr>
+ IOAudioStream[<ptr>]::addClient(<ptr>)
- IOAudioStream[<ptr>]::addClient(<ptr>) returns 0x0
- IOAudioEngineUserClient[<ptr>]::startClient() - 1 returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x4, arg0 0x0, arg1 0x0, arg2 0x0 arg3 0x0
scalarInputCount=0x0 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioStream[<ptr>]::removeClient(<ptr>)
+-IOAudioStream[<ptr>]::safeLogError kErrorLogDumpCounters mStreamErrorCountsUpdated=0
- IOAudioStream[<ptr>]::removeClient(<ptr>)
+- IOAudioEngine[<ptr>]::decrementActiveUserClients() - 0 returns 0x0
+- IOAudioEngine[<ptr>]::stopClient(<ptr>) returns 0x0
+- IOAudioEngineUserClient[<ptr>]::setOnline(0)
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x1, arg0 0x10FDE4000, arg1 0x4f, arg2 0x0 arg3 0x0
scalarInputCount=0x2 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient[<ptr>]::unregisterClientBuffer64(0x<ptr>, 0x4f)
searching for sourceBuffer 0x10fde4000
+- IOAudioEngineUserClient[<ptr>]::removeBufferSet(<ptr>)
+ IOAudioStream[<ptr>]::removeClient(<ptr>)
+-IOAudioStream[<ptr>]::safeLogError kErrorLogDumpCounters mStreamErrorCountsUpdated=0
- IOAudioStream[<ptr>]::removeClient(<ptr>)
- IOAudioEngineUserClient::unregisterClientBuffer64 no sourcebuffer returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngine[<ptr>]::stopAudioEngine()
+-IOAudioEngine[<ptr>]::setState(0x0. oldState=0x1)
+ IOAudioDevice[<ptr>]::audioEngineStopped() - numRunningAudioEngines = 1
+ IOAudioDevice[<ptr>]::scheduleIdleAudioSleep: idleSleepDelayTime = ffffffffffffffffffffffff
- IOAudioDevice[<ptr>]::scheduleIdleAudioSleep: idleSleepDelayTime = ffffffffffffffffffffffff
- IOAudioDevice[<ptr>]::audioEngineStopped() - numRunningAudioEngines = 0
- IOAudioEngine[<ptr>]::stopAudioEngine() returns 0x0
+-IOAudioEngine[<ptr>]::setState(0x0. oldState=0)
+ IOAudioEngineUserClient::externalMethod, selector=0x0, arg0 0x0, arg1 0x10fde4000, arg2 0x8010 arg3 0x4f
scalarInputCount=0x4 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f
+ IOAudioEngineUserClient::safeRegisterClientBuffer64 <ptr>
+ IOAudioEngineUserClient[<ptr>]::registerClientBuffer64 (<ptr>[1], 0x10fde4000, 0x8010, 0x4f)
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
clientBuffer->mAudioClientBuffer32.sourceBuffer before offset: <ptr>, offset size: 16
clientBuffer->mAudioClientBuffer32.sourceBuffer after offset: <ptr>
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
creating new IOAudioClientBufferSet
output
!isOnline
- IOAudioEngineUserClient::registerClientBuffer64() result 0x0
- IOAudioEngineUserClient::safeRegisterClientBuffer64 returns 0x0
- IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x3, arg0 0x0, arg1 0x0, arg2 0x0 arg3 0x0
scalarInputCount=0x0 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient[<ptr>]::startClient() - 0
audioEngine && !isInactive(). State = 0
audioEngine->getState() != kIOAudioEnginePaused
+- IOAudioEngineUserClient[<ptr>]::setOnline(1)
!isOnline() setting online
+ IOAudioEngine[<ptr>]::startClient(<ptr>)
+ IOAudioEngine[<ptr>]::incrementActiveUserClients() - 0
+ IOAudioEngine[<ptr>]::startAudioEngine(state = 0)
+ IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2
- IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2 returns 0x0
+ IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2
- IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2 returns 0x0
+ IOAudioDevice[<ptr>]::audioEngineStarting() - numRunningAudioEngines = 0
- IOAudioDevice[<ptr>]::audioEngineStarting() - numRunningAudioEngines = 1
+- IOAudioEngine[<ptr>]::resetStatusBuffer()
+-IOAudioEngine[<ptr>]::setState(0x1. oldState=0)
- IOAudioEngine[<ptr>]::getTimerInterval()
- IOAudioEngine[<ptr>]::startAudioEngine() returns 0x0
- IOAudioEngine[<ptr>]::incrementActiveUserClients() - 1 returns 0
- IOAudioEngine[<ptr>]::startClient(<ptr>) returns 0x0
engine started
bufferSet <ptr>
output clientBuffer <ptr>
+ IOAudioStream[<ptr>]::addClient(<ptr>)
- IOAudioStream[<ptr>]::addClient(<ptr>) returns 0x0
- IOAudioEngineUserClient[<ptr>]::startClient() - 1 returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x4, arg0 0x0, arg1 0x0, arg2 0x0 arg3 0x0
scalarInputCount=0x0 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioStream[<ptr>]::removeClient(<ptr>)
+-IOAudioStream[<ptr>]::safeLogError kErrorLogDumpCounters mStreamErrorCountsUpdated=0
- IOAudioStream[<ptr>]::removeClient(<ptr>)
+- IOAudioEngine[<ptr>]::decrementActiveUserClients() - 0 returns 0x0
+- IOAudioEngine[<ptr>]::stopClient(<ptr>) returns 0x0
+- IOAudioEngineUserClient[<ptr>]::setOnline(0)
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x1, arg0 0x10FDE4000, arg1 0x4f, arg2 0x0 arg3 0x0
scalarInputCount=0x2 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient[<ptr>]::unregisterClientBuffer64(0x<ptr>, 0x4f)
searching for sourceBuffer 0x10fde4000
+- IOAudioEngineUserClient[<ptr>]::removeBufferSet(<ptr>)
+ IOAudioStream[<ptr>]::removeClient(<ptr>)
+-IOAudioStream[<ptr>]::safeLogError kErrorLogDumpCounters mStreamErrorCountsUpdated=0
- IOAudioStream[<ptr>]::removeClient(<ptr>)
- IOAudioEngineUserClient::unregisterClientBuffer64 no sourcebuffer returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngine[<ptr>]::stopAudioEngine()
+-IOAudioEngine[<ptr>]::setState(0x0. oldState=0x1)
+ IOAudioDevice[<ptr>]::audioEngineStopped() - numRunningAudioEngines = 1
+ IOAudioDevice[<ptr>]::scheduleIdleAudioSleep: idleSleepDelayTime = ffffffffffffffffffffffff
- IOAudioDevice[<ptr>]::scheduleIdleAudioSleep: idleSleepDelayTime = ffffffffffffffffffffffff
- IOAudioDevice[<ptr>]::audioEngineStopped() - numRunningAudioEngines = 0
- IOAudioEngine[<ptr>]::stopAudioEngine() returns 0x0
+-IOAudioEngine[<ptr>]::setState(0x0. oldState=0)
SmartBattery: finished polling type 4
IO80211Interface::updateReport _peerManager is missing
SmartBattery: finished polling type 4
SmartBattery: finished polling type 4
+ IOAudioEngineUserClient::externalMethod, selector=0x0, arg0 0x0, arg1 0x10fde4000, arg2 0x8010 arg3 0x4f
scalarInputCount=0x4 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f
+ IOAudioEngineUserClient::safeRegisterClientBuffer64 <ptr>
+ IOAudioEngineUserClient[<ptr>]::registerClientBuffer64 (<ptr>[1], 0x10fde4000, 0x8010, 0x4f)
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
clientBuffer->mAudioClientBuffer32.sourceBuffer before offset: <ptr>, offset size: 16
clientBuffer->mAudioClientBuffer32.sourceBuffer after offset: <ptr>
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
creating new IOAudioClientBufferSet
output
!isOnline
- IOAudioEngineUserClient::registerClientBuffer64() result 0x0
- IOAudioEngineUserClient::safeRegisterClientBuffer64 returns 0x0
- IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x3, arg0 0x0, arg1 0x0, arg2 0x0 arg3 0x0
scalarInputCount=0x0 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient[<ptr>]::startClient() - 0
audioEngine && !isInactive(). State = 0
audioEngine->getState() != kIOAudioEnginePaused
+- IOAudioEngineUserClient[<ptr>]::setOnline(1)
!isOnline() setting online
+ IOAudioEngine[<ptr>]::startClient(<ptr>)
+ IOAudioEngine[<ptr>]::incrementActiveUserClients() - 0
+ IOAudioEngine[<ptr>]::startAudioEngine(state = 0)
+ IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2
- IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2 returns 0x0
+ IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2
- IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2 returns 0x0
+ IOAudioDevice[<ptr>]::audioEngineStarting() - numRunningAudioEngines = 0
- IOAudioDevice[<ptr>]::audioEngineStarting() - numRunningAudioEngines = 1
+- IOAudioEngine[<ptr>]::resetStatusBuffer()
+-IOAudioEngine[<ptr>]::setState(0x1. oldState=0)
- IOAudioEngine[<ptr>]::getTimerInterval()
- IOAudioEngine[<ptr>]::startAudioEngine() returns 0x0
- IOAudioEngine[<ptr>]::incrementActiveUserClients() - 1 returns 0
- IOAudioEngine[<ptr>]::startClient(<ptr>) returns 0x0
engine started
bufferSet <ptr>
output clientBuffer <ptr>
+ IOAudioStream[<ptr>]::addClient(<ptr>)
- IOAudioStream[<ptr>]::addClient(<ptr>) returns 0x0
- IOAudioEngineUserClient[<ptr>]::startClient() - 1 returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x4, arg0 0x0, arg1 0x0, arg2 0x0 arg3 0x0
scalarInputCount=0x0 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioStream[<ptr>]::removeClient(<ptr>)
+-IOAudioStream[<ptr>]::safeLogError kErrorLogDumpCounters mStreamErrorCountsUpdated=0
- IOAudioStream[<ptr>]::removeClient(<ptr>)
+- IOAudioEngine[<ptr>]::decrementActiveUserClients() - 0 returns 0x0
+- IOAudioEngine[<ptr>]::stopClient(<ptr>) returns 0x0
+- IOAudioEngineUserClient[<ptr>]::setOnline(0)
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x1, arg0 0x10FDE4000, arg1 0x4f, arg2 0x0 arg3 0x0
scalarInputCount=0x2 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient[<ptr>]::unregisterClientBuffer64(0x<ptr>, 0x4f)
searching for sourceBuffer 0x10fde4000
+- IOAudioEngineUserClient[<ptr>]::removeBufferSet(<ptr>)
+ IOAudioStream[<ptr>]::removeClient(<ptr>)
+-IOAudioStream[<ptr>]::safeLogError kErrorLogDumpCounters mStreamErrorCountsUpdated=0
- IOAudioStream[<ptr>]::removeClient(<ptr>)
- IOAudioEngineUserClient::unregisterClientBuffer64 no sourcebuffer returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngine[<ptr>]::stopAudioEngine()
+-IOAudioEngine[<ptr>]::setState(0x0. oldState=0x1)
+ IOAudioDevice[<ptr>]::audioEngineStopped() - numRunningAudioEngines = 1
+ IOAudioDevice[<ptr>]::scheduleIdleAudioSleep: idleSleepDelayTime = ffffffffffffffffffffffff
- IOAudioDevice[<ptr>]::scheduleIdleAudioSleep: idleSleepDelayTime = ffffffffffffffffffffffff
- IOAudioDevice[<ptr>]::audioEngineStopped() - numRunningAudioEngines = 0
- IOAudioEngine[<ptr>]::stopAudioEngine() returns 0x0
+-IOAudioEngine[<ptr>]::setState(0x0. oldState=0)
SmartBattery: finished polling type 2
+ IOAudioEngineUserClient::externalMethod, selector=0x0, arg0 0x0, arg1 0x10fde4000, arg2 0x8010 arg3 0x4f
scalarInputCount=0x4 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f
+ IOAudioEngineUserClient::safeRegisterClientBuffer64 <ptr>
+ IOAudioEngineUserClient[<ptr>]::registerClientBuffer64 (<ptr>[1], 0x10fde4000, 0x8010, 0x4f)
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
clientBuffer->mAudioClientBuffer32.sourceBuffer before offset: <ptr>, offset size: 16
clientBuffer->mAudioClientBuffer32.sourceBuffer after offset: <ptr>
null clientBufferSetList
did not find clientBufferSetList for ID 0x4f
creating new IOAudioClientBufferSet
output
!isOnline
- IOAudioEngineUserClient::registerClientBuffer64() result 0x0
- IOAudioEngineUserClient::safeRegisterClientBuffer64 returns 0x0
- IOAudioEngineUserClient::registerBuffer64 0x0 0x10fde4000 0x8010 0x4f returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
+ IOAudioEngineUserClient::externalMethod, selector=0x3, arg0 0x0, arg1 0x0, arg2 0x0 arg3 0x0
scalarInputCount=0x0 structureInputSize 0x0, scalarOutputCount 0x0, structureOutputSize 0x0
+ IOAudioEngineUserClient[<ptr>]::startClient() - 0
audioEngine && !isInactive(). State = 0
audioEngine->getState() != kIOAudioEnginePaused
+- IOAudioEngineUserClient[<ptr>]::setOnline(1)
!isOnline() setting online
+ IOAudioEngine[<ptr>]::startClient(<ptr>)
+ IOAudioEngine[<ptr>]::incrementActiveUserClients() - 0
+ IOAudioEngine[<ptr>]::startAudioEngine(state = 0)
+ IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2
- IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2 returns 0x0
+ IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2
- IOAudioDevice[<ptr>]::protectedCompletePowerStateChange() - current = 2 - pending = 2 returns 0x0
+ IOAudioDevice[<ptr>]::audioEngineStarting() - numRunningAudioEngines = 0
- IOAudioDevice[<ptr>]::audioEngineStarting() - numRunningAudioEngines = 1
+- IOAudioEngine[<ptr>]::resetStatusBuffer()
+-IOAudioEngine[<ptr>]::setState(0x1. oldState=0)
- IOAudioEngine[<ptr>]::getTimerInterval()
- IOAudioEngine[<ptr>]::startAudioEngine() returns 0x0
- IOAudioEngine[<ptr>]::incrementActiveUserClients() - 1 returns 0
- IOAudioEngine[<ptr>]::startClient(<ptr>) returns 0x0
engine started
bufferSet <ptr>
output clientBuffer <ptr>
+ IOAudioStream[<ptr>]::addClient(<ptr>)
- IOAudioStream[<ptr>]::addClient(<ptr>) returns 0x0
- IOAudioEngineUserClient[<ptr>]::startClient() - 1 returns 0x0
- IOAudioEngineUserClient::externalMethod returns 0x0
Here is the only diff to the mkmacchroot.sh script I did while experimenting.
diff --git a/mkmacchroot.sh b/mkmacchroot.sh
index 0b851da..73c9912 100755
--- a/mkmacchroot.sh
+++ b/mkmacchroot.sh
@@ -4,6 +4,7 @@ MACJAIL=${1:-"$PWD/mac-jail"}
{
cat <<EOF
+/Applications/Safari.app/Contents/MacOS/Safari
/usr/lib/dyld
/bin/bash
/bin/ls
My Mac version is:
hostname:~ root# uname -a
Darwin hostname.local 16.5.0 Darwin Kernel Version 16.5.0: Fri Mar 3 16:52:33 PST 2017; root:xnu-3789.51.2~3/RELEASE_X86_64 x86_64`