title: Lock on package COMMON-LISP violated When Globally Declaring Space Special
body: <p>I was trying to do something like this at the top of SBCL:</p>
  
  <pre><code>CL-USER&gt; (defvar space " ")
  </code></pre>
  
  <p>The error I am getting is </p>
  
  <pre><code>Lock on package COMMON-LISP violated when
  globally declaring SPACE SPECIAL while in package
  COMMON-LISP-USER.
     [Condition of type SYMBOL-PACKAGE-LOCKED-ERROR]
  
  Restarts:
   0: [CONTINUE] Ignore the package lock.
   1: [IGNORE-ALL] Ignore all package locks in the context of this operation.
   2: [UNLOCK-PACKAGE] Unlock the package.
   3: [RETRY] Retry SLY mREPL evaluation request.
   4: [*ABORT] Return to SLY's top level.
   5: [ABORT] abort thread (#&lt;THREAD "sly-channel-1-mrepl-remote-1" RUNNING {10025F6303}&gt;)
  
  Backtrace:
    0: (PACKAGE-LOCK-VIOLATION #&lt;PACKAGE "COMMON-LISP"&gt; :SYMBOL SPACE :FORMAT-CONTROL "globally declaring ~A ~A" :FORMAT-ARGUMENTS (SPACE SPECIAL))
    1: (SB-KERNEL:ASSERT-SYMBOL-HOME-PACKAGE-UNLOCKED SPACE "globally declaring ~A ~A" SPECIAL)
    2: (SB-C::PROCESS-VARIABLE-DECLARATION SPACE SPECIAL :SPECIAL)
    3: ((LABELS SB-C::MAP-NAMES :IN SB-C::%PROCLAIM) (SPACE) #&lt;FUNCTION SB-C::PROCESS-VARIABLE-DECLARATION&gt; SPECIAL :SPECIAL)
    4: (PROCLAIM (SPECIAL SPACE))
    5: (SB-IMPL::%DEFVAR SPACE #S(SB-C:DEFINITION-SOURCE-LOCATION :NAMESTRING NIL :INDICES 0) " " NIL)
    6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SB-IMPL::%DEFVAR (QUOTE SPACE) (SB-C:SOURCE-LOCATION) (UNLESS (BOUNDP #) " ")) #&lt;NULL-LEXENV&gt;)
    7: (SB-INT:SIMPLE-EVAL-IN-LEXENV (DEFVAR SPACE " ") #&lt;NULL-LEXENV&gt;)
    8: (EVAL (DEFVAR SPACE " "))
    9: ((LAMBDA NIL :IN SLYNK-MREPL::MREPL-EVAL-1))
   --more--
  </code></pre>
  
  <p>However, when I try to check and see whether <code>space</code> is defined in <code>CL-USER</code> package, it tells me that it is not.</p>
  
  <pre><code>The variable SPACE is unbound.
     [Condition of type UNBOUND-VARIABLE]
  
  Restarts:
   0: [CONTINUE] Retry using SPACE.
   1: [USE-VALUE] Use specified value.
   2: [STORE-VALUE] Set specified value and use it.
   3: [RETRY] Retry SLY mREPL evaluation request.
   4: [*ABORT] Return to SLY's top level.
   5: [ABORT] abort thread (#&lt;THREAD "sly-channel-1-mrepl-remote-1" RUNNING {10025F6303}&gt;)
  
  Backtrace:
    0: (SB-INT:SIMPLE-EVAL-IN-LEXENV SPACE #&lt;NULL-LEXENV&gt;)
    1: (EVAL SPACE)
    2: ((LAMBDA NIL :IN SLYNK-MREPL::MREPL-EVAL-1))
   --more--
  </code></pre>
  
  <p>Why is this happening? If there is a lock on the word 'space' inside the package, why is it unbound?</p>