diff --git a/ChocolArm64/Events/AInvalidAccessEventArgs.cs b/ChocolArm64/Events/AInvalidAccessEventArgs.cs
new file mode 100644
index 0000000000..a5c472a889
--- /dev/null
+++ b/ChocolArm64/Events/AInvalidAccessEventArgs.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace ChocolArm64.Events
+{
+    public class AInvalidAccessEventArgs : EventArgs
+    {
+        public long Position { get; private set; }
+
+        public AInvalidAccessEventArgs(long Position)
+        {
+            this.Position = Position;
+        }
+    }
+}
\ No newline at end of file
diff --git a/ChocolArm64/Memory/AMemory.cs b/ChocolArm64/Memory/AMemory.cs
index bb6a2b549c..2854871e35 100644
--- a/ChocolArm64/Memory/AMemory.cs
+++ b/ChocolArm64/Memory/AMemory.cs
@@ -1,3 +1,4 @@
+using ChocolArm64.Events;
 using ChocolArm64.Exceptions;
 using ChocolArm64.State;
 using System;
@@ -51,6 +52,8 @@ namespace ChocolArm64.Memory
 
         private byte*** PageTable;
 
+        public event EventHandler<AInvalidAccessEventArgs> InvalidAccess;
+
         public AMemory(IntPtr Ram)
         {
             Monitors = new Dictionary<int, ArmMonitor>();
@@ -512,6 +515,8 @@ Unmapped:
                 return (byte*)Ptr + (Position & PageMask);
             }
 
+            InvalidAccess?.Invoke(this, new AInvalidAccessEventArgs(Position));
+
             throw new VmmPageFaultException(Position);
         }
 
@@ -560,6 +565,8 @@ Unmapped:
                 return (byte*)Ptr + (Position & PageMask);
             }
 
+            InvalidAccess?.Invoke(this, new AInvalidAccessEventArgs(Position));
+
             throw new VmmPageFaultException(Position);
         }
 
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs
index 8871cbe7d6..8cf73785e0 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs
@@ -91,7 +91,7 @@ namespace Ryujinx.HLE.HOS.Kernel
                     break;
 
                 case AddressSpaceType.Addr39Bits:
-                    CodeRegionStart  = 0;
+                    CodeRegionStart  = 0x8000000;
                     CodeRegionSize   = 0x80000000;
                     MapRegionSize    = 0x1000000000;
                     HeapRegionSize   = 0x180000000;
diff --git a/Ryujinx.HLE/HOS/Process.cs b/Ryujinx.HLE/HOS/Process.cs
index 448f1afac8..1d8bfeb8f5 100644
--- a/Ryujinx.HLE/HOS/Process.cs
+++ b/Ryujinx.HLE/HOS/Process.cs
@@ -67,6 +67,8 @@ namespace Ryujinx.HLE.HOS
 
             Memory = new AMemory(Device.Memory.RamPointer);
 
+            Memory.InvalidAccess += CpuInvalidAccessHandler;
+
             MemoryManager = new KMemoryManager(this);
 
             TlsPages = new List<KTlsPageManager>();
@@ -283,11 +285,15 @@ namespace Ryujinx.HLE.HOS
 
         private void BreakHandler(object sender, AInstExceptionEventArgs e)
         {
+            PrintStackTraceForCurrentThread();
+
             throw new GuestBrokeExecutionException();
         }
 
         private void UndefinedHandler(object sender, AInstUndefinedEventArgs e)
         {
+            PrintStackTraceForCurrentThread();
+
             throw new UndefinedInstructionException(e.Position, e.RawOpCode);
         }
 
@@ -334,6 +340,24 @@ namespace Ryujinx.HLE.HOS
             return Translator;
         }
 
+        private void CpuInvalidAccessHandler(object sender, AInvalidAccessEventArgs e)
+        {
+            PrintStackTraceForCurrentThread();
+        }
+
+        private void PrintStackTraceForCurrentThread()
+        {
+            foreach (KThread Thread in Threads.Values)
+            {
+                if (Thread.Context.IsCurrentThread())
+                {
+                    PrintStackTrace(Thread.Context.ThreadState);
+
+                    break;
+                }
+            }
+        }
+
         public void PrintStackTrace(AThreadState ThreadState)
         {
             StringBuilder Trace = new StringBuilder();
diff --git a/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/VoiceContext.cs b/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/VoiceContext.cs
index bee574ff85..044b2efc2c 100644
--- a/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/VoiceContext.cs
+++ b/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/VoiceContext.cs
@@ -125,6 +125,13 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
             //As of now, it assumes that HostChannelsCount == 2.
             WaveBuffer Wb = WaveBuffers[BufferIndex];
 
+            if (Wb.Position == 0)
+            {
+                Samples = new int[0];
+
+                return;
+            }
+
             if (SampleFormat == SampleFormat.PcmInt16)
             {
                 int SamplesCount = (int)(Wb.Size / (sizeof(short) * ChannelsCount));