Testing zsweep=1 #168

Closed
opened 2 years ago by duke · 15 comments
duke commented 2 years ago
Owner

This code is currently on the zsweep branch, checkout that branch to do testing.

zsweep has various config file options, but the most basic usage just requires two:

zsweep=1
zsweepaddress=zs1...

By default a node will only sweep to a zaddr in the current wallet.dat. To sweep funds out of the current wallet set zsweepexternal=1 :

zsweep=1
zsweepaddress=zs1...
zsweepexternal=1

By default zsweep runs every 5 blocks. To change it:

zsweepinterval=10

By default zsweep makes sure to not reduce the anonset in any tx by having a maximum number of inputs of 8. This should be fine for new wallets, but if you have an existing wallet with many zutxos it can be changed like this:

zsweepmaxinputs=50

Large values will make sweeping faster at the expense of reducing the anonset.

The default zsweep fee is 10000 puposhis or 0.0001 HUSH, the default for all transactions. To use fee=0 for zsweep transactions:

zsweepfee=0

Things To Test

  • Not setting zsweepaddress gives an error and stops node
  • Setting an invalid zsweepaddress gives an error and stops node
  • Setting a zsweepaddress which is not in the current wallet gives an error and stops node
  • Setting zsweep=1 and zsweepaddress=zaddr works correctly
  • Setting a zsweepaddress outside wallet and zsweepexternal=1 works correctly
  • Setting zsweepinterval works correctly
  • Setting an invalid zsweepinterval (0 or negative) gives gives warning and uses default
  • Setting zsweepmaxinputs works correctly
  • Setting an invalid zsweepmaxinputs (0, 1 or negative) gives error and stops node
  • Setting zsweepfee=0 works correctly
  • Make sure consolidation=1 and zsweep=1 works correctly together
This code is currently on the `zsweep` branch, checkout that branch to do testing. zsweep has various config file options, but the most basic usage just requires two: ``` zsweep=1 zsweepaddress=zs1... ``` By default a node will only sweep to a zaddr in the current wallet.dat. To sweep funds out of the current wallet set `zsweepexternal=1` : ``` zsweep=1 zsweepaddress=zs1... zsweepexternal=1 ``` By default `zsweep` runs every 5 blocks. To change it: ``` zsweepinterval=10 ``` By default `zsweep` makes sure to not reduce the anonset in any tx by having a maximum number of inputs of 8. This should be fine for new wallets, but if you have an existing wallet with many zutxos it can be changed like this: ``` zsweepmaxinputs=50 ``` Large values will make sweeping faster at the expense of reducing the anonset. The default zsweep fee is 10000 puposhis or 0.0001 HUSH, the default for all transactions. To use fee=0 for zsweep transactions: ``` zsweepfee=0 ``` ## Things To Test - [x] Not setting zsweepaddress gives an error and stops node - [x] Setting an invalid zsweepaddress gives an error and stops node - [x] Setting a zsweepaddress which is not in the current wallet gives an error and stops node - [x] Setting zsweep=1 and zsweepaddress=zaddr works correctly - [x] Setting a zsweepaddress outside wallet and zsweepexternal=1 works correctly - [x] Setting zsweepinterval works correctly - [x] Setting an invalid zsweepinterval (0 or negative) gives gives warning and uses default - [ ] Setting zsweepmaxinputs works correctly - [ ] Setting an invalid zsweepmaxinputs (0, 1 or negative) gives error and stops node - [x] Setting zsweepfee=0 works correctly - [ ] Make sure consolidation=1 and zsweep=1 works correctly together
Poster
Owner

To see if zsweep tx's have happened on your node, you can do grep -i sweep ~/.hush/HUSH3/debug.log

To see if zsweep tx's have happened on your node, you can do `grep -i sweep ~/.hush/HUSH3/debug.log`
Collaborator

I am still waiting for test node to finish syncing, but first 4 tests all passed for me as far as either the node giving meaningful error and stopping or starting correctly when zsweep=1 and zsweepaddress=zaddr in wallet. I'll test actual functionality when finished syncing.

I am still waiting for test node to finish syncing, but first 4 tests all passed for me as far as either the node giving meaningful error and stopping or starting correctly when zsweep=1 and zsweepaddress=zaddr in wallet. I'll test actual functionality when finished syncing.
Collaborator

Setting an invalid zsweepinterval (0 or negative) gives error and stops node

I tested with 0 and negative. It gives this message and continues running node with default of 5. I think this is appropriate way to handle if everything else is valid unless we should stop node on error for anything invalid.
main_impl: Invalid sweep interval of -22, setting to default of 5

Message is also output every 5 blocks.

Checking z_getoperationstatus, I get output like this every 5 blocks. This is when there are no funds to sweep, so no txs created.

  {
    "id": "opid-b4ebc95c-ea2c-4fbc-a7b1-09a4cbccca83",
    "status": "success",
    "creation_time": 1661486559,
    "result": {
      "num_tx_created": 0,
      "amount_swept": "0.00",
      "sweep_txids": [
      ]
    },
    "execution_secs": 0.04932535,
    "method": "sweep",
    "target_height": 1059364
  }

Trying to sweep to external, I get this in debug.log.:
AppInit2: sweeping funds to a zaddr in an external wallet

Empty result when I check z_getoperationstatus and doesn't appear to work. Funds stay in address of local node. I added consolidation=1 at same time as adding external config and may be related. Need to test without consolidation=1 as it seems it might make zsweep not work at all. I tested switching back to local address and removing zsweepexternal=1 and zsweep was never running with consolidation=1.

`Setting an invalid zsweepinterval (0 or negative) gives error and stops node` I tested with 0 and negative. It gives this message and continues running node with default of 5. I think this is appropriate way to handle if everything else is valid unless we should stop node on error for anything invalid. `main_impl: Invalid sweep interval of -22, setting to default of 5` Message is also output every 5 blocks. Checking `z_getoperationstatus`, I get output like this every 5 blocks. This is when there are no funds to sweep, so no txs created. ``` { "id": "opid-b4ebc95c-ea2c-4fbc-a7b1-09a4cbccca83", "status": "success", "creation_time": 1661486559, "result": { "num_tx_created": 0, "amount_swept": "0.00", "sweep_txids": [ ] }, "execution_secs": 0.04932535, "method": "sweep", "target_height": 1059364 } ``` Trying to sweep to external, I get this in debug.log.: `AppInit2: sweeping funds to a zaddr in an external wallet` Empty result when I check `z_getoperationstatus` and doesn't appear to work. Funds stay in address of local node. I added `consolidation=1` at same time as adding external config and may be related. Need to test without `consolidation=1` as it seems it might make zsweep not work at all. I tested switching back to local address and removing `zsweepexternal=1` and zsweep was never running with `consolidation=1`.
Collaborator

Sweeping funds from one address that's already been swept to, to a new address seems to report incorrect total and double what was swept. Actual amount was 13.9987:

{
    "id": "opid-902a57d7-0306-4d47-8c1b-d22777298e9f",
    "status": "success",
    "creation_time": 1661489117,
    "result": {
      "num_tx_created": 0,
      "amount_swept": "27.9974",
      "sweep_txids": [
        "7b510b90c3f1647c1e31b888bc5eb1566c10dbc82b3d5dfa9229abcfb8bb15ef"
      ]
    },
    "execution_secs": 51.690750292,
    "method": "sweep",
    "target_height": 1059402
  },
Sweeping funds from one address that's already been swept to, to a new address seems to report incorrect total and double what was swept. Actual amount was 13.9987: ``` { "id": "opid-902a57d7-0306-4d47-8c1b-d22777298e9f", "status": "success", "creation_time": 1661489117, "result": { "num_tx_created": 0, "amount_swept": "27.9974", "sweep_txids": [ "7b510b90c3f1647c1e31b888bc5eb1566c10dbc82b3d5dfa9229abcfb8bb15ef" ] }, "execution_secs": 51.690750292, "method": "sweep", "target_height": 1059402 }, ```
Collaborator

Setting a zsweepaddress outside wallet and zsweepexternal=1 works correctly

Confirmed this works correctly as long as not using consolidation=1. consolidation=1 seems to break zsweep whether using local or external address.

`Setting a zsweepaddress outside wallet and zsweepexternal=1 works correctly` Confirmed this works correctly as long as not using consolidation=1. consolidation=1 seems to break zsweep whether using local or external address.
Collaborator

I had to reindex test node because it started showing incorrect low balance in sweep address. Tried rescan first, but still low balance after sweeping. I was trying to send tx every 2-3 minutes and setting zsweepinterval high to test zsweepmaxinputs.

Lots of txs might end up requiring frequent reindexing if something gets jacked up to prevent double spending. This isn't too helpful because I don't have exact message but it was saying something about tx not found during node startup for a bunch of txids and I have a bunch of sapling nullifier exists, prevent double spend in log. May have been calling z_sendmany too quickly or when in invalid state. I'll test more once reindexing finishes.

I had to reindex test node because it started showing incorrect low balance in sweep address. Tried rescan first, but still low balance after sweeping. I was trying to send tx every 2-3 minutes and setting zsweepinterval high to test zsweepmaxinputs. Lots of txs might end up requiring frequent reindexing if something gets jacked up to prevent double spending. This isn't too helpful because I don't have exact message but it was saying something about tx not found during node startup for a bunch of txids and I have a bunch of sapling nullifier exists, prevent double spend in log. May have been calling z_sendmany too quickly or when in invalid state. I'll test more once reindexing finishes.
Poster
Owner

@fekt giving a warning and setting to a default value is more user-friendly behavior, I agree, so I changed the checklist item and checked that box. Thanks.

@fekt do you like the current behavior of it giving the warning every X blocks that the value was invalid (makes it more likely the user will see it) or should we update the value so it doesn't spam debug.log as much?

As for the amount swept being incorrect and exactly double, I think it's counting how much is swept out of any zaddr plus how much is swept in to the zsweepaddress, which is not that useful. It should either count how much is swept out of addresses or how much is swept into the zsweepaddress.

I have a hunch on why consolidation=1 and zsweep=1 together are not working. I made sweeping run every 5 blocks but there is logic in consolidation that says "if we are less than 15 blocks until the next sweep, don't run consolidation" and since we are always less than 15 blocks until the next sweep, consolidation never actually runs, it bails out early every time.

@fekt giving a warning and setting to a default value is more user-friendly behavior, I agree, so I changed the checklist item and checked that box. Thanks. @fekt do you like the current behavior of it giving the warning every X blocks that the value was invalid (makes it more likely the user will see it) or should we update the value so it doesn't spam debug.log as much? As for the amount swept being incorrect and exactly double, I think it's counting how much is swept out of any zaddr plus how much is swept in to the zsweepaddress, which is not that useful. It should either count how much is swept out of addresses or how much is swept into the zsweepaddress. I have a hunch on why consolidation=1 and zsweep=1 together are not working. I made sweeping run every 5 blocks but there is logic in consolidation that says "if we are less than 15 blocks until the next sweep, don't run consolidation" and since we are always less than 15 blocks until the next sweep, consolidation never actually runs, it bails out early every time.
Collaborator

This is what I was getting on startup when balance incorrect. It seemed to run OK for awhile until balance got too low.

tx hash 791d2998b4584590823cde3dff3d20d95cdb4601643a36d5952437974ef842fb does not exist!

A bunch of them with different hashes as well as tx is unconfirmed likely for all the related txs and why balance shows incorrect. Seems to think they are spent, but uncofirmed and not actually spent. Also, sometimes get a hash or txid of all 0's, but not sure if from zsweep or existing bug being highlighted by sending a bunch of txs on cron. I was sending 2 txs every 2 minutes.

If I rescan, all those messages still show and balance still incorrect until reindexing. Happened again overnight where balance too low to continue sending txs on cron. It still runs zsweep regularly, but with 0 amount.

This is with no longer using consolidation=1. I am also using deletetx=1 and have zindex=1 if it makes any difference.

I am testing on another node that has been fine for over 12 hours so far.

This is what I was getting on startup when balance incorrect. It seemed to run OK for awhile until balance got too low. `tx hash 791d2998b4584590823cde3dff3d20d95cdb4601643a36d5952437974ef842fb does not exist!` A bunch of them with different hashes as well as `tx is unconfirmed` likely for all the related txs and why balance shows incorrect. Seems to think they are spent, but uncofirmed and not actually spent. Also, sometimes get a hash or txid of all 0's, but not sure if from zsweep or existing bug being highlighted by sending a bunch of txs on cron. I was sending 2 txs every 2 minutes. If I rescan, all those messages still show and balance still incorrect until reindexing. Happened again overnight where balance too low to continue sending txs on cron. It still runs zsweep regularly, but with 0 amount. This is with no longer using consolidation=1. I am also using deletetx=1 and have zindex=1 if it makes any difference. I am testing on another node that has been fine for over 12 hours so far.
Collaborator

do you like the current behavior of it giving the warning every X blocks that the value was invalid (makes it more likely the user will see it) or should we update the value so it doesn't spam debug.log as much?

I think it is fine to show it every interval so user is more likely to see it and change it. It is trade off with spamming log, but I don't think it's necessary to change it for them since it's using default value anyway.

> do you like the current behavior of it giving the warning every X blocks that the value was invalid (makes it more likely the user will see it) or should we update the value so it doesn't spam debug.log as much? > I think it is fine to show it every interval so user is more likely to see it and change it. It is trade off with spamming log, but I don't think it's necessary to change it for them since it's using default value anyway.
Poster
Owner

@fekt if zsweepexternal=1 is set but the zsweepaddress is in the current wallet.dat, should we give a warning or error? This is something we can automatically detect and tell a user if they think they are sweeping to an external wallet, but they actually are not.

@fekt if `zsweepexternal=1` is set but the `zsweepaddress` is in the current wallet.dat, should we give a warning or error? This is something we can automatically detect and tell a user if they think they are sweeping to an external wallet, but they actually are not.
Collaborator

Since it's advanced feature, I think a warning is fine every interval if it still sweeps to the address specified, regardless if external or not. Funds never leave their wallet. If it makes more sense with existing logic to error on start, that's fine too though.

Since it's advanced feature, I think a warning is fine every interval if it still sweeps to the address specified, regardless if external or not. Funds never leave their wallet. If it makes more sense with existing logic to error on start, that's fine too though.
Collaborator

Not sure if it's just my wallet or VPS it's on, but I tried latest commit over the weekend and kept getting core dumps. I ended up creating new wallet.dat and was still getting core dumps without sending any transactions and just letting it sweep. I'll check logs later when I can, but I do notice multiple sweep operations that get cancelled before one ends up having a success response. This is with no funds that actually need to be swept and all funds already in sweep address. I was also no longer using consolidation=1. When I did try consolidation=1 initially on latest commit, I was seeing consolidation operations happen and no sweeps, but may not have let it run long enough before changing config or too many inputs so it wasn't trying to sweep. I created new wallet.dat because z_sendmany kept failing and balances incorrect even after multiple reindexes and rescans.

On another test node, which I did not update to latest commit and isn't using consolidation=1, I am also running into the same issue where I end up with a decent amount of txs stuck in mempool that never confirm so balances remain low. I have multiple with hashes or txids of all 0's mixed with real txids that are locking funds and keeping balance low. I have not experienced core dumps on this one yet.

Not sure if it's just my wallet or VPS it's on, but I tried latest commit over the weekend and kept getting core dumps. I ended up creating new wallet.dat and was still getting core dumps without sending any transactions and just letting it sweep. I'll check logs later when I can, but I do notice multiple sweep operations that get cancelled before one ends up having a success response. This is with no funds that actually need to be swept and all funds already in sweep address. I was also no longer using consolidation=1. When I did try consolidation=1 initially on latest commit, I was seeing consolidation operations happen and no sweeps, but may not have let it run long enough before changing config or too many inputs so it wasn't trying to sweep. I created new wallet.dat because z_sendmany kept failing and balances incorrect even after multiple reindexes and rescans. On another test node, which I did not update to latest commit and isn't using consolidation=1, I am also running into the same issue where I end up with a decent amount of txs stuck in mempool that never confirm so balances remain low. I have multiple with hashes or txids of all 0's mixed with real txids that are locking funds and keeping balance low. I have not experienced core dumps on this one yet.
Collaborator

Getting core dumps on two nodes now. One of them is basically a new wallet with new addresses and only 100 kb. This is a VPS with 4 GB of RAM and 2 CPU on latest commit. Not sure if helpful but these are last entries in log:

2022-08-29 11:42:01 ThreadRPCServer method=z_sendmany
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: z_sendmany initialized (params={"fromaddress":"zs1addr1","amounts":[{"address":"zs1addr2","amount":0.0001}],"minconf":1,"fee":0.0001})
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: found unspent Sapling note (txid=4a88c789a8, vShieldedSpend=6, amount=4.9998, memo=0000000000)
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: spending 0.0002 to send 0.0001 with fee 0.0001
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: transparent input: 0.00 (to choose from)
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: private input: 4.9998 (to choose from)
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: transparent output: 0.00
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: private output: 0.0001
2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: fee: 0.0001
2022-08-29 11:42:01 Build: Creating Sapling SpendDescriptions
2022-08-29 11:42:05 connection to 139.99.189.228:18030 timeout
2022-08-29 11:42:05 ShuffleOutputs: Shuffling 8 zouts
2022-08-29 11:42:09 Build: Created spendAuth and binding sigs
2022-08-29 11:42:09 sendrawtransaction: Submitting to mempool
2022-08-29 11:42:09 trying connection 196.52.2.60:18030 lastseen=22742.3hrs
2022-08-29 11:42:09 Blockpolicy mempool tx 237987a9ec not adding
2022-08-29 11:42:09 sendrawtransaction: Relaying raw tx to mempool

Last entries in other node, which has 100 MB wallet.dat and physical machine with 8 GB of RAM and 6-core CPU. This is not on latest commit:

2022-08-29 23:08:20 Build: Creating Sapling SpendDescriptions
2022-08-29 23:08:22 ShuffleOutputs: Shuffling 9 zouts
2022-08-29 23:08:23 Build: Created spendAuth and binding sigs
2022-08-29 23:08:23 sendrawtransaction: Submitting to mempool
2022-08-29 23:08:23 sendrawtransaction: Relaying raw tx to mempool

I am reindexing VPS again. Physical, I changed to send 1 tx every 3 minutes in case it was crashing from high load.

Getting core dumps on two nodes now. One of them is basically a new wallet with new addresses and only 100 kb. This is a VPS with 4 GB of RAM and 2 CPU on latest commit. Not sure if helpful but these are last entries in log: ``` 2022-08-29 11:42:01 ThreadRPCServer method=z_sendmany 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: z_sendmany initialized (params={"fromaddress":"zs1addr1","amounts":[{"address":"zs1addr2","amount":0.0001}],"minconf":1,"fee":0.0001}) 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: found unspent Sapling note (txid=4a88c789a8, vShieldedSpend=6, amount=4.9998, memo=0000000000) 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: spending 0.0002 to send 0.0001 with fee 0.0001 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: transparent input: 0.00 (to choose from) 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: private input: 4.9998 (to choose from) 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: transparent output: 0.00 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: private output: 0.0001 2022-08-29 11:42:01 opid-8793b11a-94c4-474a-b445-cf90da5c4a0a: fee: 0.0001 2022-08-29 11:42:01 Build: Creating Sapling SpendDescriptions 2022-08-29 11:42:05 connection to 139.99.189.228:18030 timeout 2022-08-29 11:42:05 ShuffleOutputs: Shuffling 8 zouts 2022-08-29 11:42:09 Build: Created spendAuth and binding sigs 2022-08-29 11:42:09 sendrawtransaction: Submitting to mempool 2022-08-29 11:42:09 trying connection 196.52.2.60:18030 lastseen=22742.3hrs 2022-08-29 11:42:09 Blockpolicy mempool tx 237987a9ec not adding 2022-08-29 11:42:09 sendrawtransaction: Relaying raw tx to mempool ``` Last entries in other node, which has 100 MB wallet.dat and physical machine with 8 GB of RAM and 6-core CPU. This is not on latest commit: ``` 2022-08-29 23:08:20 Build: Creating Sapling SpendDescriptions 2022-08-29 23:08:22 ShuffleOutputs: Shuffling 9 zouts 2022-08-29 23:08:23 Build: Created spendAuth and binding sigs 2022-08-29 23:08:23 sendrawtransaction: Submitting to mempool 2022-08-29 23:08:23 sendrawtransaction: Relaying raw tx to mempool ``` I am reindexing VPS again. Physical, I changed to send 1 tx every 3 minutes in case it was crashing from high load.
Collaborator

@duke This is backtrace from last core dump.

#0  RelayTransaction (tx=..., ss=...) at net.cpp:2128
        criticalblock = {lock = {m = 0x55901ab13bc0 <cs_mapRelay>, is_locked = true}}
        pnode = 0x0
        _foreach_continue2126 = false
        _foreach_end2126 = <optimized out>
        _foreach_cur2126 = <optimized out>
        _foreach_col2126 = <optimized out>
        inv = {type = 1, hash = {<base_blob<256>> = {data = "\326\064c]+\004 \270\016W\303gJ\251\267)\200\203\351\344\202ΩF!*)ϴl\376\243"}, <No data fields>}}
        criticalblock = {lock = {m = 0x55901ab13ca0 <cs_vNodes>, is_locked = true}}
        vRelayNodes = Python Exception <class 'gdb.error'> value has been optimized out: 

        newSize = 1
        __func__ = "RelayTransaction"
#1  0x0000559019a963df in RelayTransaction (tx=...) at net.cpp:2089
        ss = {<CBaseDataStream<std::vector<char, zero_after_free_allocator<char> > >> = {vch = std::vector of length 9009, capacity 10000 = {4 '\004', 0 '\000', 0 '\000', 
              -128 '\200', -123 '\205', 32 ' ', 47 '/', -119 '\211', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', -13 '\363', 64 '@', 16 '\020', 0 '\000', 
              16 '\020', 39 '\'', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 1 '\001', 107 'k', 8 '\b', 66 'B', -80 '\260', -49 '\317', -36 '\334', 22 '\026', 
              -5 '\373', -94 '\242', 30 '\036', 68 'D', 24 '\030', 32 ' ', 126 '~', 106 'j', 116 't', 50 '2', 96 '`', -24 '\350', -120 '\210', -99 '\235', 18 '\022', 
              21 '\025', -2 '\376', 28 '\034', 11 '\v', -34 '\336', -116 '\214', 62 '>', -48 '\320', 55 '7', -59 '\305', 18 '\022', 88 'X', -117 '\213', -91 '\245', 
              -83 '\255', 86 'V', -77 '\263', 91 '[', -79 '\261', 108 'l', 9 '\t', 58 ':', -32 '\340', 67 'C', 15 '\017', 85 'U', -2 '\376', 103 'g', 41 ')', -32 '\340', 
              -114 '\216', 66 'B', -65 '\277', 49 '1', 79 'O', 117 'u', 100 'd', -39 '\331', -74 '\266', -110 '\222', 87 'W', 12 '\f', -33 '\337', 56 '8', -87 '\251', 
              -106 '\226', 33 '!', -7 '\371', -11 '\365', 114 'r', 30 '\036', 69 'E', 46 '.', -84 '\254', -22 '\352', 115 's', 0 '\000', 9 '\t', 12 '\f', -92 '\244', 105 'i', 
              82 'R', -85 '\253', -17 '\357', 32 ' ', 116 't', -114 '\216', 91 '[', 47 '/', -71 '\271', 123 '{', 21 '\025', 97 'a', -11 '\365', -56 '\310', 58 ':', 6 '\006', 
              -55 '\311', 93 ']', 6 '\006', 65 'A', -13 '\363', 50 '2', 123 '{', 117 'u', -128 '\200', 43 '+', 105 'i', 105 'i', -106 '\226', 93 ']', 105 'i', -24 '\350', 
              -34 '\336', 19 '\023', 15 '\017', -63 '\301', -9 '\367', 98 'b', -17 '\357', -104 '\230', -17 '\357', 35 '#', -61 '\303', 92 '\\', -28 '\344', -83 '\255', 
              31 '\037', -19 '\355', -76 '\264', -108 '\224', 80 'P', 75 'K', 80 'P', 1 '\001', -109 '\223', -75 '\265', 1 '\001', -63 '\301', -111 '\221', 106 'j', 96 '`', 
              -49 '\317', 44 ',', -72 '\270', -62 '\302', -74 '\266', -56 '\310', -47 '\321', 46 '.', -118 '\212', -97 '\237', 14 '\016', 104 'h', 75 'K', 11 '\v', 
              -123 '\205', 26 '\032', 25 '\031', -5 '\373', -40 '\330', -79 '\261', 91 '[', -110 '\222', -115 '\215', -7 '\371', 124 '|', -96 '\240', 85 'U', -122 '\206', 
              0 '\000'...}, nReadPos = 0, nType = 1, nVersion = 1987424}, <No data fields>}
#2  0x0000559019b2a18f in sendrawtransaction (params=..., fHelp=fHelp@entry=false, mypk=...) at rpc/rawtransaction.cpp:1278
        existingCoins = 0x0
        view = <optimized out>
        fHaveMempool = <optimized out>
        fHaveChain = <optimized out>
        strCmd = ""
        criticalblock = {lock = {m = 0x55901ab09680 <cs_main>, is_locked = true}}
        tx = {hash = {<base_blob<256>> = {data = "\326\064c]+\004 \270\016W\303gJ\251\267)\200\203\351\344\202ΩF!*)ϴl\376\243"}, <No data fields>}, 
          static SPROUT_MIN_CURRENT_VERSION = 1, static SPROUT_MAX_CURRENT_VERSION = 2, static OVERWINTER_MIN_CURRENT_VERSION = 3, static OVERWINTER_MAX_CURRENT_VERSION = 3, 
          static SAPLING_MIN_CURRENT_VERSION = 4, static SAPLING_MAX_CURRENT_VERSION = 4, fOverwintered = true, nVersion = 4, nVersionGroupId = 2301567109, 
          vin = std::vector of length 0, capacity 0, vout = std::vector of length 0, capacity 0, nLockTime = 0, nExpiryHeight = 1065203, valueBalance = 10000, 
          vShieldedSpend = std::vector of length 1, capacity 1 = {{cv = {<base_blob<256>> = {
                  data = "k\bB\260\317\334\026\373\242\036D\030 ~jt2`舝\022\025\376\034\vތ>\320", <incomplete sequence \305>}, <No data fields>}, 
              anchor = {<base_blob<256>> = {data = "\022X\213\245\255V\263[\261l\t:\340C\017U\376g)\340\216B\277\061Oudٶ\222W\f"}, <No data fields>}, 
              nullifier = {<base_blob<256>> = {
                  data = "\337\070\251\226!\371\365r\036E.\254\352s\000\t\f\244iR\253\357 t\216[/\271{\025", <incomplete sequence \365>}, <No data fields>}, 
              rk = {<base_blob<256>> = {
                  data = "\310:\006\311]\006A\363\062{u\200+ii\226]i\350\336\023\017\301\367b\357\230\357#\303", <incomplete sequence \344>}, <No data fields>}, zkproof = {
                _M_elems = "\255\037\355\264\224PKP\001\223\265\001\301\221j`\317,\270¶\310\321.\212\237\016hK\v\205\032\031\373ر[\222\215\371|\240U\206\000\227\060\\\256O_`F\306pc\217\372 g\331\064X\376;}\351\354\370\266\066\036\v\213\220R\213\037\224\060R\035V\341͂з^\364\342Vc\371\220z\023)\027\267\332\367ŧ\327Kv\261\325\032:\336ʮҝ8v?\304(\347*C]K\360\352\207\030r\tO\265f\327s\255\266\230\346\034\t\004\252\001\327\275\345\245\017\037\065\211\334\036\000\363\033\376\063\367\000k\227\063F\r\253\006\226\070\033\333\066K\212\071\355\027\016\261\066\001\204AN\361\365\344#a"}, spendAuthSig = {
                _M_elems = "\362\241^%\027W.\354\005ń\260#\217\234y\243a\004\217\253&\352\322\r>o2\022з*\345w)Q\v\\J\375\226֑`\341\364\335\071Ul\203\302Iv+9\030\300\247\351\3

@duke This is backtrace from last core dump. ``` #0 RelayTransaction (tx=..., ss=...) at net.cpp:2128 criticalblock = {lock = {m = 0x55901ab13bc0 <cs_mapRelay>, is_locked = true}} pnode = 0x0 _foreach_continue2126 = false _foreach_end2126 = <optimized out> _foreach_cur2126 = <optimized out> _foreach_col2126 = <optimized out> inv = {type = 1, hash = {<base_blob<256>> = {data = "\326\064c]+\004 \270\016W\303gJ\251\267)\200\203\351\344\202ΩF!*)ϴl\376\243"}, <No data fields>}} criticalblock = {lock = {m = 0x55901ab13ca0 <cs_vNodes>, is_locked = true}} vRelayNodes = Python Exception <class 'gdb.error'> value has been optimized out: newSize = 1 __func__ = "RelayTransaction" #1 0x0000559019a963df in RelayTransaction (tx=...) at net.cpp:2089 ss = {<CBaseDataStream<std::vector<char, zero_after_free_allocator<char> > >> = {vch = std::vector of length 9009, capacity 10000 = {4 '\004', 0 '\000', 0 '\000', -128 '\200', -123 '\205', 32 ' ', 47 '/', -119 '\211', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', -13 '\363', 64 '@', 16 '\020', 0 '\000', 16 '\020', 39 '\'', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 0 '\000', 1 '\001', 107 'k', 8 '\b', 66 'B', -80 '\260', -49 '\317', -36 '\334', 22 '\026', -5 '\373', -94 '\242', 30 '\036', 68 'D', 24 '\030', 32 ' ', 126 '~', 106 'j', 116 't', 50 '2', 96 '`', -24 '\350', -120 '\210', -99 '\235', 18 '\022', 21 '\025', -2 '\376', 28 '\034', 11 '\v', -34 '\336', -116 '\214', 62 '>', -48 '\320', 55 '7', -59 '\305', 18 '\022', 88 'X', -117 '\213', -91 '\245', -83 '\255', 86 'V', -77 '\263', 91 '[', -79 '\261', 108 'l', 9 '\t', 58 ':', -32 '\340', 67 'C', 15 '\017', 85 'U', -2 '\376', 103 'g', 41 ')', -32 '\340', -114 '\216', 66 'B', -65 '\277', 49 '1', 79 'O', 117 'u', 100 'd', -39 '\331', -74 '\266', -110 '\222', 87 'W', 12 '\f', -33 '\337', 56 '8', -87 '\251', -106 '\226', 33 '!', -7 '\371', -11 '\365', 114 'r', 30 '\036', 69 'E', 46 '.', -84 '\254', -22 '\352', 115 's', 0 '\000', 9 '\t', 12 '\f', -92 '\244', 105 'i', 82 'R', -85 '\253', -17 '\357', 32 ' ', 116 't', -114 '\216', 91 '[', 47 '/', -71 '\271', 123 '{', 21 '\025', 97 'a', -11 '\365', -56 '\310', 58 ':', 6 '\006', -55 '\311', 93 ']', 6 '\006', 65 'A', -13 '\363', 50 '2', 123 '{', 117 'u', -128 '\200', 43 '+', 105 'i', 105 'i', -106 '\226', 93 ']', 105 'i', -24 '\350', -34 '\336', 19 '\023', 15 '\017', -63 '\301', -9 '\367', 98 'b', -17 '\357', -104 '\230', -17 '\357', 35 '#', -61 '\303', 92 '\\', -28 '\344', -83 '\255', 31 '\037', -19 '\355', -76 '\264', -108 '\224', 80 'P', 75 'K', 80 'P', 1 '\001', -109 '\223', -75 '\265', 1 '\001', -63 '\301', -111 '\221', 106 'j', 96 '`', -49 '\317', 44 ',', -72 '\270', -62 '\302', -74 '\266', -56 '\310', -47 '\321', 46 '.', -118 '\212', -97 '\237', 14 '\016', 104 'h', 75 'K', 11 '\v', -123 '\205', 26 '\032', 25 '\031', -5 '\373', -40 '\330', -79 '\261', 91 '[', -110 '\222', -115 '\215', -7 '\371', 124 '|', -96 '\240', 85 'U', -122 '\206', 0 '\000'...}, nReadPos = 0, nType = 1, nVersion = 1987424}, <No data fields>} #2 0x0000559019b2a18f in sendrawtransaction (params=..., fHelp=fHelp@entry=false, mypk=...) at rpc/rawtransaction.cpp:1278 existingCoins = 0x0 view = <optimized out> fHaveMempool = <optimized out> fHaveChain = <optimized out> strCmd = "" criticalblock = {lock = {m = 0x55901ab09680 <cs_main>, is_locked = true}} tx = {hash = {<base_blob<256>> = {data = "\326\064c]+\004 \270\016W\303gJ\251\267)\200\203\351\344\202ΩF!*)ϴl\376\243"}, <No data fields>}, static SPROUT_MIN_CURRENT_VERSION = 1, static SPROUT_MAX_CURRENT_VERSION = 2, static OVERWINTER_MIN_CURRENT_VERSION = 3, static OVERWINTER_MAX_CURRENT_VERSION = 3, static SAPLING_MIN_CURRENT_VERSION = 4, static SAPLING_MAX_CURRENT_VERSION = 4, fOverwintered = true, nVersion = 4, nVersionGroupId = 2301567109, vin = std::vector of length 0, capacity 0, vout = std::vector of length 0, capacity 0, nLockTime = 0, nExpiryHeight = 1065203, valueBalance = 10000, vShieldedSpend = std::vector of length 1, capacity 1 = {{cv = {<base_blob<256>> = { data = "k\bB\260\317\334\026\373\242\036D\030 ~jt2`舝\022\025\376\034\vތ>\320", <incomplete sequence \305>}, <No data fields>}, anchor = {<base_blob<256>> = {data = "\022X\213\245\255V\263[\261l\t:\340C\017U\376g)\340\216B\277\061Oudٶ\222W\f"}, <No data fields>}, nullifier = {<base_blob<256>> = { data = "\337\070\251\226!\371\365r\036E.\254\352s\000\t\f\244iR\253\357 t\216[/\271{\025", <incomplete sequence \365>}, <No data fields>}, rk = {<base_blob<256>> = { data = "\310:\006\311]\006A\363\062{u\200+ii\226]i\350\336\023\017\301\367b\357\230\357#\303", <incomplete sequence \344>}, <No data fields>}, zkproof = { _M_elems = "\255\037\355\264\224PKP\001\223\265\001\301\221j`\317,\270¶\310\321.\212\237\016hK\v\205\032\031\373ر[\222\215\371|\240U\206\000\227\060\\\256O_`F\306pc\217\372 g\331\064X\376;}\351\354\370\266\066\036\v\213\220R\213\037\224\060R\035V\341͂з^\364\342Vc\371\220z\023)\027\267\332\367ŧ\327Kv\261\325\032:\336ʮҝ8v?\304(\347*C]K\360\352\207\030r\tO\265f\327s\255\266\230\346\034\t\004\252\001\327\275\345\245\017\037\065\211\334\036\000\363\033\376\063\367\000k\227\063F\r\253\006\226\070\033\333\066K\212\071\355\027\016\261\066\001\204AN\361\365\344#a"}, spendAuthSig = { _M_elems = "\362\241^%\027W.\354\005ń\260#\217\234y\243a\004\217\253&\352\322\r>o2\022з*\345w)Q\v\\J\375\226֑`\341\364\335\071Ul\203\302Iv+9\030\300\247\351\3 ```
Poster
Owner

Above coredump was fixed. zsweep functionality seems to mostly work (at least when not used with consolidate=1 or deletetx=1), we should open up new issues for specific issues that are found.

Above coredump was fixed. zsweep functionality seems to mostly work (at least when not used with consolidate=1 or deletetx=1), we should open up new issues for specific issues that are found.
duke closed this issue 2 years ago
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.