Hi Tomasz,
I've been chasing a backfill issue and have captured some diagnostics that may be useful. I read the prior thread
Trouble backfilling certain IQFeed tickers in scan/exploration before posting, and your reply there framed the issue as the plugin waiting indefinitely for
data from IQFeed that never arrives. My recent testing produced evidence that may change that picture in some cases — I wanted to share it in case it's useful.
Environment
- AmiBroker 7.0.1 (7001)
- IQFeed.dll 6.1.0.0 (dated 12 Nov 2022)
- IQConnect 6.2.3.5 (current latest, 15 Apr 2026)
- Full universe backfills, ~12,000 US symbols, 1-min bars
- Running on a well-provisioned Windows 11 PC, ethernet/WiFi both tested
Symptom
Typically 3–15 symbols per full universe backfill end up permanently stuck in Back... state. The backfill dialog counters show "0 running backfills, 0 queued" but the stuck symbol's status stays
at Back... indefinitely. Only restarting AmiBroker clears it. The stuck symbols are different every run, which rules out a consistent subscription/coverage issue for specific tickers (unlike the
continuous-contract futures case in thread 30812).
New diagnostic
I enabled IQConnect's own logging (Diagnostics Utility → Logging tab → Lookup Requests + Lookup Data + Lookup Error) and ran a full universe backfill. This captured every HIX command the plugin
sent and every response IQConnect returned, at the IQConnect ↔ plugin boundary.
Results from one representative run:
- 18,997 HIX requests dispatched by the plugin
- 18,905 !ENDMSG! terminators returned by IQConnect
- 96 error responses returned (77 × E,!NO_DATA!,, + 19 × E,Could not connect to History socket.,)
- 0 requests lacking any response
- 15 symbols still stuck in AmiBroker's UI at the end
The IQConnect-level log proves that every request received either !ENDMSG! or an error from IQConnect. The previous framing — "data never arrives" — doesn't fit this run. Data did arrive. The
stuck symbols split into two patterns:
Pattern A — terminator received, flag not cleared (7 of 15 in this run)
Symbols: QUBX, PSA-J, NIOBW, NDOW, MUU, MSGS, METC.
For each, the IQConnect log shows:
- Plugin sends HIX,,60,...,10000
- IQConnect returns !ENDMSG!, within 100 ms to 6 s
- Plugin sends the next HIX,<OTHER_SYMBOL>,... on the same client channel (so the receive thread clearly processed something)
…yet AmiBroker's UI keeps the stuck symbol's flag as Back.... Given the terminator was delivered and the channel advanced, this looks more consistent with a race between the receive thread and
the flag-clearing code path than with "no response arrived". Supporting this, the stuck rate increases materially when DebugView is attached to the plugin (attached listener slows the producer
slightly, seems to widen the race window) and when IQConnect's own Lookup Data logging is enabled (heavy disk I/O slows response delivery).
Pattern B — HIX never dispatched (8 of 15 in this run)
Symbols: RMEN, INSP, FTWO, FNX, BTO, BOBS, BIGY, +1 unrecorded.
Zero appearances of these tickers in the entire IQConnect log — no HIX command was ever sent. Yet they appear in the Backfill dialog with Back... status. This looks like a different failure mode
than Pattern A — the request dispatcher appears to be losing entries between the analysis engine flagging the symbol as needing backfill and the actual socket write.
Files I can share if helpful
- Full IQConnect log (~777 MB, compressible to ~60 MB)
- DebugView capture showing the plugin's own state messages (Waiting for backfill of X without matching Backfill complete. Resuming X for the stuck symbols)
- Line-by-line trace of each stuck symbol in the IQConnect log
Questions I'd appreciate your view on
- Does this look like something you've encountered in internal builds? Particularly the Pattern B case (HIX never leaving the plugin) seems hard to explain with a waiting-for-response model.
- Given the plugin has no public release since 6.0.3 (2016) / the 6.1.0 bundled build (2022), would you be open to sharing an experimental or test build if these reproducible cases would help
isolate either pattern? - Even if the underlying races in Pattern A are hard to fully eliminate in the current architecture, would a defensive per-request timeout on the receive loop be something you'd consider?
Turning a permanent hang into a recoverable error would let users build retry logic around it.
Happy to share any of the logs on request, or run additional captures with any configuration that would help. Not trying to stir up an old discussion — just wanted to provide cleaner evidence
than was available in 2022 when thread 30812 was posted.
Thanks,
Dan


