Visual Studio Code shows (possibly) dead thread in call stack as running

Hi guys,

It seems that there are threads shown as still active in Visual Studio Code which should already be ended.
I am new to Python and maybe I am understanding something not right how the threading works there.

My example runs a TCP socket server which opens a new thread for each client that connects.
The thread should stay alive until the connection to the client gets closed.

This is my sample code.

import socket
import os
from _thread import *

ServerSideSocket = socket.socket()
host = '127.0.0.1'
port = 2004
ThreadCount = 0
try:
    ServerSideSocket.bind((host, port))
except socket.error as e:
    print(str(e))

print('Socket is listening..')
ServerSideSocket.listen(5)

def multi_threaded_client(connection, address):
    connection.send(str.encode('Server is working:'))
    while True:
        data = connection.recv(2048)

        # abort while loop if connection is closed
        if not data:
            break
        
        print('Data from: ' + address[0] + ':' + str(address[1]))
        print (data)
        response = 'Server message: ' + data.decode('utf-8') + '\n'
        connection.sendall(str.encode(response))

    connection.close()
    print('Connection closed: ' + address[0] + ':' + str(address[1]))
# thread should end there from my understanding

while True:
    Client, address = ServerSideSocket.accept()
    print('Connected to: ' + address[0] + ':' + str(address[1]))

    start_new_thread(multi_threaded_client, (Client, address, ))
    ThreadCount += 1
    print('Thread Number: ' + str(ThreadCount))
ServerSideSocket.close()

The code seems to work in general, but Visual Studio Code shows me that there are threads still running which actually should be already terminated.

I would asume that “Dummy-7” is already terminated and it should not apear as running thread in the call stack window.
Is this the way how it should be?
Is “Dummy-7” really still running at this moment? If yes, how to terminate it correctly?

I would suggest trying without Visual Studio and instead using threading.enumerate to list the current live threads.