Running master 4d661ba:
```
src/bitcoin-cli combinepsbt [""] or src/bitcoin-cli combinepsbt []
```

```
  * frame #0: 0x000000010016054a bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional_detail::optional_base<CMutableTransaction>::is_initialized(this=0x0000000000000000) const at optional.hpp:394 [opt]
    frame #1: 0x000000010016054a bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional_detail::optional_base<CMutableTransaction>::optional_base(this=<unavailable>, rhs=0x0000000000000000) at optional.hpp:196 [opt]
    frame #2: 0x0000000100160542 bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional<CMutableTransaction>::optional(this=0x000070000b9fe7c0, (null)=0x0000000000000000) at optional.hpp:958 [opt]
    frame #3: 0x0000000100160542 bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(PartiallySignedTransaction const&) [inlined] boost::optional<CMutableTransaction>::optional(this=0x000070000b9fe7c0, (null)=0x0000000000000000) at optional.hpp:958 [opt]
    frame #4: 0x0000000100160542 bitcoind`PartiallySignedTransaction::PartiallySignedTransaction(this=0x000070000b9fe7c0, psbt_in=0x0000000000000000) at sign.h:576 [opt]
    frame #5: 0x0000000100142ae5 bitcoind`combinepsbt(JSONRPCRequest const&) [inlined] PartiallySignedTransaction::PartiallySignedTransaction(this=0x000070000b9fe700, psbt_in=<unavailable>) at sign.h:576 [opt]
    frame #6: 0x0000000100142ae0 bitcoind`combinepsbt(request=<unavailable>) at rawtransaction.cpp:1526 [opt]
    frame #7: 0x0000000100170f0a bitcoind`CRPCTable::execute(this=<unavailable>, request=0x000070000b9fead0) const at server.cpp:557 [opt]
```
}.ToString());
    RPCTypeCheck(request.params, {UniValue::VSTR, UniValue::VBOOL, UniValue::VBOOL}, true);
    
    CMutableTransaction tx;
    bool permitsigdata = request.params[1].isNull() ? false : request.params[1].get_bool();
    bool witness_specified = !request.params[2].isNull();
    bool iswitness = witness_specified ? request.params[2].get_bool() : false;
    bool try_witness = permitsigdata ? (witness_specified ? iswitness : true) : false;
    bool try_no_witness = permitsigdata ? (witness_specified ? !iswitness : true) : true;
    if (!DecodeHexTx(tx, request.params[0].get_str(), try_no_witness, try_witness)) {
        throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed");
    }
    
    for (CTxIn& input : tx.vin) {
        if ((!input.scriptSig.empty() || !input.scriptWitness.IsNull()) && !permitsigdata) {
            throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Inputs must not have scriptSigs and scriptWitnesses");
        }
        input.scriptSig.clear();
        input.scriptWitness.SetNull();
    }
    
    PartiallySignedTransaction psbtx;
    psbtx.tx = tx;
    for (unsigned int i = 0; i < tx.vin.size(); ++i) {
        psbtx.inputs.push_back(PSBTInput());
    }
    for (unsigned int i = 0; i < tx.vout.size(); ++i) {
        psbtx.outputs.push_back(PSBTOutput());
    }