Hi Dev Team,

To eliminate minor syntax, spelling and similar bugs locally instead of
finding them when the gitlab pipeline fails (again and again) I wanted to
use tools\check_dissector.py or other tools e.g check_spelling.py for that
matter (on Windows).

However, it seems there is a minor issue in check_spelling.py which
prevents it from running on Windows.

*Issue*

"""
Traceback (most recent call last):
  File "Programs\Python\Python312-32\Lib\concurrent\futures\process.py",
line 264, in _process_worker
    r = call_item.fn(*call_item.args, **call_item.kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "wireshark\tools\check_spelling.py", line 390, in checkFile
    file.spellCheck(result)
  File "wireshark\tools\check_spelling.py", line 216, in spellCheck
    if word in wiki_db:
               ^^^^^^^
NameError: name 'wiki_db' is not defined
"""

The reason check_spelling.py works in the Wireshark GitLab pipeline but
fails on a local Windows computer is due to a fundamental difference in how
Linux and Windows handle multitasking in Python.

*The "Fork" vs. "Spawn" Difference*

   - On Linux (GitLab Pipeline): Python uses the fork method by default.
   When the script creates sub-processes to check files, it makes an exact
   copy of the current process's memory. This means the sub-processes
   "inherit" the wiki_db variable exactly as it was after being filled in the
   main block.


   - On Windows PC: Python uses the spawn method. Instead of copying
   memory, it starts a brand-new Python interpreter for every sub-process.
   Crucially, these new processes do not run the code inside your if __name__
   == '__main__': block—they only see the global variables defined outside of
   it.


*Fix*

Add 1+1 line somewhere at the beginning of the file (after word_frequency
line 44).
# Initialize wiki_db globally so it's accessible to worker processes
wiki_db = {}


If it's ok, I would raise an MR for this one line code change.

Please comment.

Thank you.

Regards,
Tamas
_______________________________________________
Wireshark-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to