Could not create program address from signer seeds

I am getting some error when i do call anchor program from client side the error is could not create program address with signer seeds seeds do not result in valid address

let cpi_program = ctx.accounts.token_program.clone();
let cpi_accounts = token::SetAuthority{
                account_or_mint: ctx.accounts.escrow_account.to_account_info().clone(),
                current_authority: ctx.accounts.wallet.to_account_info().clone()

let cpi_ctx = CpiContext::new(cpi_program,cpi_accounts);
            ).expect("Not ok");

#[instruction(escrow_bump: u8,data_bump: u8)]
pub struct Stake<'info> {
    pub wallet: AccountInfo<'info>,
    pub owner: AccountInfo<'info>,
    #[account(init_if_needed, payer = wallet, seeds=[mint.key().to_bytes().as_ref()], bump = escrow_bump, token::mint = mint, token::authority = wallet)]
    pub escrow_account: Account<'info,TokenAccount>,
    #[account(init, payer = wallet, seeds=[b"data".as_ref(),mint.to_account_info().key.as_ref()], bump = data_bump, space = 8+8+8+32)]
    pub escrow_data: Account<'info,Data>,
    pub eligible: Account<'info,Eligible>,
    pub fromTokenAccount: Account<'info, TokenAccount>,
    pub mint: Account<'info,Mint>,
    pub token_program: AccountInfo<'info>,
    pub system_program: AccountInfo<'info>,
    pub rent: Sysvar<'info, Rent>,

Hi @surfsho and welcome to the forum! :wave:

I’m not totally familiar with some of that syntax for the anchor instruction, but I believe that you need to supply a different escrow_bump or data_bump value when you get that error.

It sounds like the issue mentioned in the docs here:

Note that the address generated using create_program_address is not guaranteed to be a valid program address off the curve. For example, let’s assume that the seed "escrow2" does not generate a valid program address.

To generate a valid program address using "escrow2 as a seed, use find_program_address , iterating through possible bump seeds until a valid combination is found.