qeeqbox/social-analyzer · warning

Driver Session Issue

Error message

Driver Session Issue

What it means

In find_username_site (modules/slow-scan.js:186), 'Driver Session Issue' is logged when the generic slow-scan's error path calls await driver.quit() and that call rejects. The message means the Selenium session was already invalid at cleanup time; the underlying scan error is swallowed and the promise resolves undefined.

Source

Thrown at modules/slow-scan.js:186

          resolve(temp_profile)
        } else if (temp_profile.image !== '') {
          temp_profile.username = username
          temp_profile.text = 'unavailable'
          temp_profile.title = 'unavailable'
          temp_profile.language = 'unavailable'
          temp_profile.rate = '%00.0'
          temp_profile.link = site.url.replace('{username}', username)
          temp_profile.type = site.type
          resolve(temp_profile)
        } else {
          resolve(undefined)
        }
      } catch (err) {
        if (driver !== undefined) {
          try {
            await driver.quit()
          } catch (err) {
            helper.verbose && console.log('Driver Session Issue')
          }
        }
        resolve(undefined)
      }
    } else {
      resolve(undefined)
    }
  })
}

export default{
  find_username_advanced
}

View on GitHub (pinned to 1ba0905e00)

Solutions

  1. Enable verbose logging earlier to capture the original per-site scan error
  2. Recreate a fresh driver per site or on failure instead of reusing a possibly-dead session
  3. Align chromedriver version with the browser; add headless and --disable-dev-shm-usage flags in CI
  4. Treat undefined result as scan failure and retry the site with a longer timeout

Example fix

// before
try { await driver.quit() } catch (err) {
  helper.verbose && console.log('Driver Session Issue')
}
resolve(undefined)
// after
try { await driver.quit() } catch (quitErr) {
  helper.verbose && console.log('Driver Session Issue:', quitErr && quitErr.message)
}
resolve(undefined)
Defensive patterns

Strategy: retry

Validate before calling

const session = await driver.getSession().catch(() => null)
if (!session) {
  driver = await new Builder().forBrowser('chrome').build()
}

Type guard

function isDriverAlive(driver) {
  return driver !== undefined && typeof driver.quit === 'function'
}

Try / catch

let result
for (let attempt = 0; attempt < 2 && result === undefined; attempt++) {
  try {
    result = await find_username_site(driver, url)
  } catch (scanErr) {
    console.error('scan failed:', scanErr)
    if (driver !== undefined) {
      try { await driver.quit() } catch (quitErr) {
        console.warn('Driver Session Issue:', quitErr && quitErr.message)
      }
      driver = await new Builder().forBrowser('chrome').build() // fresh session for retry
    }
  }
}

Prevention

When it happens

Trigger: A site scan in the slow-scan loop throws (timeout, navigation error, missing element, browser crash); the catch block runs with driver defined; driver.quit() fails because the session is gone; helper.verbose is on.

Common situations: Slow sites exceeding driver page-load timeouts; driver/browser version mismatch; Chrome crashing under memory pressure during many sequential scans; session ended earlier by browser exit; CI containers without a display.

Related errors


AI-assisted analysis of qeeqbox/social-analyzer@1ba0905e00 (2026-08-31). Data as JSON: /api/errors/996fcfc5cc7ca49a. Report an issue: GitHub.