shadowsocks/shadowsocks-windows · warning · ArgumentException

Password can not be blank

Error message

Password can not be blank

What it means

ArgumentException thrown by CheckPassword when the password is null or empty. Shadowsocks derives the session key from the password, so a blank password yields a zero/weak key and is rejected during server validation.

Source

Thrown at shadowsocks-csharp/Model/Configuration.cs:368

        }

        public static void CheckPort(int port)
        {
            if (port <= 0 || port > 65535)
                throw new ArgumentException(I18N.GetString("Port out of range"));
        }

        public static void CheckLocalPort(int port)
        {
            CheckPort(port);
            if (port == 8123)
                throw new ArgumentException(I18N.GetString("Port can't be 8123"));
        }

        private static void CheckPassword(string password)
        {
            if (string.IsNullOrEmpty(password))
                throw new ArgumentException(I18N.GetString("Password can not be blank"));
        }

        public static void CheckServer(string server)
        {
            if (string.IsNullOrEmpty(server))
                throw new ArgumentException(I18N.GetString("Server IP can not be blank"));
        }

        public static void CheckTimeout(int timeout, int maxTimeout)
        {
            if (timeout <= 0 || timeout > maxTimeout)
                throw new ArgumentException(
                    I18N.GetString("Timeout is invalid, it should not exceed {0}", maxTimeout));
        }
    }
}

View on GitHub (pinned to 891d971682)

Solutions

  1. Enter a non-empty password for the server.
  2. Re-scan the SS QR code or re-paste the full ss:// URL including the password.
  3. Edit gui-config.json to set a non-empty password and reload.

Example fix

// before
Configuration.CheckPassword("");

// after
Configuration.CheckPassword("your-strong-password");
Defensive patterns

Strategy: validation

Validate before calling

if (string.IsNullOrEmpty(password)) {
    // block Save / report error before calling CheckPassword
    return;
}

Try / catch

try { Configuration.CheckPassword(pw); }
catch (ArgumentException ex) { /* prompt the user for a password */ }

Prevention

When it happens

Trigger: A server config saved with an empty password field. The password was cleared in the GUI. An imported SS URL or QR code is missing the password segment.

Common situations: An ss:// URL missing the password. A new server entry saved before the password was typed. Config edited externally and the password deleted.

Related errors


AI-assisted analysis of shadowsocks/shadowsocks-windows@891d971682 (2026-08-13). Data as JSON: /api/errors/b0695fbf396593dc. Report an issue: GitHub.