Thank you for comments, I use the intern-soft to detect symbols existing for package but found it's failed even I unbound the variables. :) 

Please feel free to close the ticket, thank you!

On Jul 4, 2025 12:36 AM, Eli Zaretskii <eliz@gnu.org> wrote:

tags 78952 notabug
thanks

> From: Lin Sun <sunlin7@hotmail.com>
> Date: Fri, 4 Jul 2025 04:22:38 +0000
> msip_labels:
>
> Hi, get confused intern-soft return a symbol which already unbound, 
>
> Here are the lines to make a symbol then makunbound the symbol, but after that the intern-soft still return the symbol:
>
> (setq a-test-variable-unbound-later t)
>
> (intern-soft "a-test-variable-unbound-later")
>
> (makunbound 'a-test-variable-unbound-later)
>
> (boundp 'a-test-variable-unbound-later)
>
> (intern-soft "a-test-variable-unbound-later") ;; why not nil?
>
> It's a feature or a bug? Thanks

makunbound doesn't remove the symbol from obarray.  Use unintern to
remove it.

This is not a bug.