Mac-Hroot icon indicating copy to clipboard operation
Mac-Hroot copied to clipboard

Safari does not run on the created jail.

Open gavaza opened this issue 8 years ago • 1 comments

$ /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

gavaza avatar Oct 14 '17 23:10 gavaza

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`

jsarenik avatar Oct 15 '17 16:10 jsarenik