diff --git a/Lib/dummy_thread.py b/Lib/dummy_thread.py
index 7c26f9e..21fd03f 100644
--- a/Lib/dummy_thread.py
+++ b/Lib/dummy_thread.py
@@ -20,7 +20,6 @@
            'interrupt_main', 'LockType']
 
 import traceback as _traceback
-import warnings
 
 class error(Exception):
     """Dummy implementation of thread.error."""
@@ -76,13 +75,6 @@
     """Dummy implementation of thread.allocate_lock()."""
     return LockType()
 
-def stack_size(size=None):
-    """Dummy implementation of thread.stack_size()."""
-    if size is not None:
-        msg = "setting thread stack size not supported on this platform"
-        warnings.warn(msg, RuntimeWarning)
-    return 0
-
 class LockType(object):
     """Class implementing dummy implementation of thread.LockType.
 
diff --git a/Lib/test/output/test_thread b/Lib/test/output/test_thread
index ec58d73..d49651d 100644
--- a/Lib/test/output/test_thread
+++ b/Lib/test/output/test_thread
@@ -4,11 +4,3 @@
 
 *** Barrier Test ***
 all tasks done
-
-*** Changing thread stack size ***
-trying stack_size = 32768
-waiting for all tasks to complete
-all tasks done
-trying stack_size = 4194304
-waiting for all tasks to complete
-all tasks done
diff --git a/Lib/test/test_thread.py b/Lib/test/test_thread.py
index d970107..ea345b6 100644
--- a/Lib/test/test_thread.py
+++ b/Lib/test/test_thread.py
@@ -115,38 +115,3 @@
     thread.start_new_thread(task2, (i,))
 done.acquire()
 print 'all tasks done'
-
-# not all platforms support changing thread stack size
-print '\n*** Changing thread stack size ***'
-if thread.stack_size() != 0:
-    raise ValueError, "initial stack_size not 0"
-
-thread.stack_size(0) 
-if thread.stack_size() != 0:
-    raise ValueError, "stack_size not reset to default"
-
-from os import name as os_name
-if os_name in ("nt", "os2", "posix"):
-
-    for tss, ok in ((4096, 0), (32768, 1), (0x400000, 1), (0, 1)):
-        if ok:
-            failed = lambda s, e: s != e
-            fail_msg = "stack_size(%d) failed - should succeed"
-        else:
-            failed = lambda s, e: s == e
-            fail_msg = "stack_size(%d) succeeded - should fail"
-        thread.stack_size(tss)
-        if failed(thread.stack_size(), tss):
-            raise ValueError, fail_msg % tss
-    
-    for tss in (32768, 0x400000):
-        print 'trying stack_size = %d' % tss
-        next_ident = 0
-        for i in range(numtasks):
-            newtask()
-
-        print 'waiting for all tasks to complete'
-        done.acquire()
-        print 'all tasks done'
-
-    thread.stack_size(0)
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index 09e84f4..7eb9758 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -85,22 +85,6 @@
             print 'all tasks done'
         self.assertEqual(numrunning.get(), 0)
 
-    # run with a minimum thread stack size (32kB)
-    def test_various_ops_small_stack(self):
-        if verbose:
-            print 'with 32kB thread stack size...'
-        threading.stack_size(0x8000)
-        self.test_various_ops()
-        threading.stack_size(0)
-
-    # run with a large thread stack size (16MB)
-    def test_various_ops_large_stack(self):
-        if verbose:
-            print 'with 16MB thread stack size...'
-        threading.stack_size(0x1000000)
-        self.test_various_ops()
-        threading.stack_size(0)
-
     def test_foreign_thread(self):
         # Check that a "foreign" thread can use the threading module.
         def f(mutex):
diff --git a/Lib/threading.py b/Lib/threading.py
index 5655dde..c27140d 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -15,7 +15,7 @@
 # Rename some stuff so "from threading import *" is safe
 __all__ = ['activeCount', 'Condition', 'currentThread', 'enumerate', 'Event',
            'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore', 'Thread',
-           'Timer', 'setprofile', 'settrace', 'local', 'stack_size']
+           'Timer', 'setprofile', 'settrace', 'local']
 
 _start_new_thread = thread.start_new_thread
 _allocate_lock = thread.allocate_lock
@@ -713,8 +713,6 @@
     _active_limbo_lock.release()
     return active
 
-from thread import stack_size
-
 # Create the main thread object
 
 _MainThread()
