#428·Sublist3r

Sublist3r crashes on Python 3.14 with TypeError: cannot pickle '_thread.lock' object

Author: inteleon404Created Aug 30, 2026Updated Aug 30, 2026

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:
bash
sublist3r -d example.com

Steps to Reproduce

  1. Install Sublist3r.
  2. Run it with Python 3.14.
  3. Execute:
bash
sublist3r -d example.com
  1. 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 object

Expected 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' object

The relevant execution path appears to be:

sublist3r.main()
    ↓
enum.start()
    ↓
multiprocessing.Process.start()
    ↓
ForkingPickler.dump()
    ↓
BaiduEnum state
    ↓
_thread.lock cannot be pickled

Possible 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
BingEnum

A 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

bash
$ 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 object

Version Information

Sublist3r: 1.0
Python: 3.14
OS: Kali Linux