After some digging, I found the cause:
the node I removed during a ready function is not being affected by queue_free() on on_exit_tree() function of the node.
Found two solution:
replaced the remove_child of hide()
add queue_free() after removing a node
I thought that get_tree().quit() removes all nodes on memory after exit.