diff --git a/src/ld_so/tcb.rs b/src/ld_so/tcb.rs
index 643e51223ccf5e1d1f4203b26ab0855d51bed657..662ef4c5f595d2eec3cfd7c9ff71353afe44fdfb 100644
--- a/src/ld_so/tcb.rs
+++ b/src/ld_so/tcb.rs
@@ -55,6 +55,7 @@ impl Tcb {
         let (tls, tcb_page) = Self::os_new(size)?;
 
         let tcb_ptr = tcb_page.as_mut_ptr() as *mut Self;
+        // println!("New TCB: {:p}", tcb_ptr);
         ptr::write(tcb_ptr, Self {
             tls_end: tls.as_mut_ptr().add(tls.len()),
             tls_len: tls.len(),
@@ -111,12 +112,12 @@ impl Tcb {
                     let range = master.range();
                     let data = master.data();
                     if let Some(tls_data) = tls.get_mut(range) {
-                        println!(
-                            "tls master {}: {:p}, {:#x}: {:p}, {:#x}",
-                            i,
-                            data.as_ptr(), data.len(),
-                            tls_data.as_mut_ptr(), tls_data.len()
-                        );
+                        // println!(
+                        //     "tls master {}: {:p}, {:#x}: {:p}, {:#x}",
+                        //     i,
+                        //     data.as_ptr(), data.len(),
+                        //     tls_data.as_mut_ptr(), tls_data.len()
+                        // );
 
                         tls_data.copy_from_slice(data);
                     } else {
diff --git a/src/platform/pte.rs b/src/platform/pte.rs
index 2a4bf5e97503fdeaed8a5e0458bd995d46cc760c..2948f76df220064753083484cfc1deaa23febad4 100644
--- a/src/platform/pte.rs
+++ b/src/platform/pte.rs
@@ -68,11 +68,15 @@ unsafe extern "C" fn pte_osThreadShim(
     tls_masters_ptr: *mut Master,
     tls_masters_len: usize
 ) {
-    let mut tcb = Tcb::new(tls_size).unwrap();
-    tcb.masters_ptr = tls_masters_ptr;
-    tcb.masters_len = tls_masters_len;
-    tcb.copy_masters().unwrap();
-    tcb.activate();
+    // The kernel allocated TLS does not have masters set, so do not attempt to copy it.
+    // It will be copied by the kernel.
+    if ! tls_masters_ptr.is_null() {
+        let mut tcb = Tcb::new(tls_size).unwrap();
+        tcb.masters_ptr = tls_masters_ptr;
+        tcb.masters_len = tls_masters_len;
+        tcb.copy_masters().unwrap();
+        tcb.activate();
+    }
 
     // Wait until pte_osThreadStart
     pte_osMutexLock(mutex);