Forgetting to include the redeemscript when invoking signrawtransactionwithkey used to give a useful error:

    $ bitcoin-cli -regtest signrawtransactionwithkey "02000000018a24833c36be23272080d6be8a53e36586b81e0ac447e1298ee58e18cc96bdee0100000000ffffffff0118246bee0000000017a914e139e3904e9e69ecbce87b0fcfb73b1b0e3b9e818700000000" '["cUJ7bUweEgENv4ixezsSyZa2uBJxR37iFLtCt18gSvkjpkj7CmMr"]'  '[{"txid":"eebd96cc188ee58e29e147c40a1eb88665e3538abed680202723be363c83248a","vout":1,"scriptPubKey":"0020f89f2138a58a2042310f297259ca8050bcaecd3a0f3c936edffb7e38e31d775a","amount":"40.00000000"}]'

With 0.17:

    error code: -3
    error message:
    Missing redeemScript

With master/0.18:

    {
      "hex": "02000000018a24833c36be23272080d6be8a53e36586b81e0ac447e1298ee58e18cc96bdee0100000000ffffffff0118246bee0000000017a914e139e3904e9e69ecbce87b0fcfb73b1b0e3b9e818700000000",
      "complete": false,
      "errors": [
        {
          "txid": "eebd96cc188ee58e29e147c40a1eb88665e3538abed680202723be363c83248a",
          "vout": 1,
          "witness": [
          ],
          "scriptSig": "",
          "sequence": 4294967295,
          "error": "Witness program was passed an empty witness"
        }
      ]
    }


<!--- What behavior did you expect? -->

<!--- What was the actual behavior (provide screenshots if the issue is GUI-related)? -->

<!--- How reliably can you reproduce the issue, what are the steps to do so? -->

<!-- What version of Bitcoin Core are you using, where did you get it (website, self-compiled, etc)? -->

<!-- What type of machine are you observing the error on (OS/CPU and disk type)? -->

<!-- For the GUI-related issue on Linux provide names and versions of a distro, a desktop environment and a graphical shell (if relevant). -->

<!-- Any extra information that might be useful in the debugging process. -->
<!--- This is normally the contents of a `debug.log` or `config.log` file. Raw text or a link to a pastebin type site are preferred. -->

keystore->AddCScript(GetScriptForWitness(redeemScript));
                }
                UniValue ws = find_value(prevOut, "witnessScript");
                if (!ws.isNull()) {
                    std::vector<unsigned char> wsData(ParseHexV(ws, "witnessScript"));
                    CScript witnessScript(wsData.begin(), wsData.end());
                    keystore->AddCScript(witnessScript);
                    
                    keystore->AddCScript(GetScriptForWitness(witnessScript));
                }
            }
        }
    }
    int nHashType = ParseSighashString(hashType);
    bool fHashSingle = ((nHashType & ~SIGHASH_ANYONECANPAY) == SIGHASH_SINGLE);
    
    UniValue vErrors(UniValue::VARR);
    
    
    const CTransaction txConst(mtx);
    
    for (unsigned int i = 0; i < mtx.vin.size(); i++) {
        CTxIn& txin = mtx.vin[i];
        auto coin = coins.find(txin.prevout);
        if (coin == coins.end() || coin->second.IsSpent()) {
            TxInErrorToJSON(txin, vErrors, "Input not found or already spent");
            continue;
        }
        const CScript& prevPubKey = coin->second.out.scriptPubKey;
        const CAmount& amount = coin->second.out.nValue;