Sublist3r crashes on Python 3.14 with TypeError: cannot pickle '_thread.lock' object
Description
Sublist3r crashes during passive subdomain enumeration when running with Python 3.14.
The enumeration starts normally and successfully queries several search engines/sources, but then fails when the multiprocessing layer attempts to serialize the BaiduEnum object.
Environment
- OS: Kali Linux
- Python: 3.14
- Sublist3r: 1.0
- Command:
sublist3r -d example.comSteps to Reproduce
- Install Sublist3r.
- Run it with Python 3.14.
- Execute:
sublist3r -d example.com- Wait until the passive enumeration reaches the multiprocessing stage.
Actual Behavior
Sublist3r terminates with:
Traceback (most recent call last):
...
File "/usr/lib/python3.14/multiprocessing/reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
TypeError: cannot pickle '_thread.lock' object
when serializing dict item 'lock'
when serializing sublist3r.BaiduEnum state
when serializing sublist3r.BaiduEnum objectExpected Behavior
Sublist3r should complete the enumeration without crashing, or gracefully handle Python 3.14 compatibility issues.
Additional Context
The crash appears to occur during multiprocessing serialization of the BaiduEnum object:
TypeError: cannot pickle '_thread.lock' objectThe relevant execution path appears to be:
sublist3r.main()
↓
enum.start()
↓
multiprocessing.Process.start()
↓
ForkingPickler.dump()
↓
BaiduEnum state
↓
_thread.lock cannot be pickledPossible Cause
This appears to be related to Python 3.14's multiprocessing behavior and the serialization of an object containing a thread lock.
The issue may be triggered by the way Sublist3r creates or stores multiprocessing/threading state inside the enumeration engine objects.
Suggested Investigation
Please verify compatibility with Python 3.14, particularly the multiprocessing implementation used by the search-engine enumeration classes such as:
BaiduEnum
YahooEnum
GoogleEnum
BingEnumA potential fix may involve avoiding non-pickleable synchronization objects in process state or restructuring the multiprocessing/threading model.
Impact
This prevents Sublist3r from completing enumeration on affected Python 3.14 environments.
Reproduction
$ sublist3r -d example.com
[-] Enumerating subdomains now for example.com
[-] Searching now in Baidu..
[-] Searching now in Yahoo..
[-] Searching now in Google..
[-] Searching now in Bing..
[-] Searching now in Ask..
[-] Searching now in Netcraft..
[-] Searching now in DNSdumpster..
[-] Searching now in Virustotal..
[-] Searching now in ThreatCrowd..
[-] Searching now in SSL Certificates..
[-] Searching now in PassiveDNS..
TypeError: cannot pickle '_thread.lock' object
when serializing dict item 'lock'
when serializing sublist3r.BaiduEnum state
when serializing sublist3r.BaiduEnum objectVersion Information
Sublist3r: 1.0
Python: 3.14
OS: Kali LinuxSource: aboul3la/Sublist3r