diff --git a/ioctl/client.go b/ioctl/client.go
index ed85ab6da8..64560b903d 100644
--- a/ioctl/client.go
+++ b/ioctl/client.go
@@ -53,7 +53,7 @@ type (
 		// SelectTranslation select a translation based on UILanguage
 		SelectTranslation(map[config.Language]string) (string, config.Language)
 		// AskToConfirm asks user to confirm from terminal, true to continue
-		AskToConfirm(string) bool
+		AskToConfirm(string) (bool, error)
 		// ReadSecret reads password from terminal
 		ReadSecret() (string, error)
 		// Execute a bash command
@@ -173,12 +173,14 @@ func (c *client) SetInsecureWithFlag(cb func(*bool, string, bool, string)) {
 	cb(&c.insecure, "insecure", !c.cfg.SecureConnect, usage)
 }
 
-func (c *client) AskToConfirm(info string) bool {
+func (c *client) AskToConfirm(info string) (bool, error) {
 	message := ConfirmationMessage{Info: info, Options: []string{"yes"}}
 	fmt.Println(message.String())
 	var confirm string
-	fmt.Scanf("%s", &confirm)
-	return strings.EqualFold(confirm, "yes")
+	if _, err := fmt.Scanf("%s", &confirm); err != nil {
+		return false, err
+	}
+	return strings.EqualFold(confirm, "yes"), nil
 }
 
 func (c *client) SelectTranslation(trls map[config.Language]string) (string, config.Language) {
diff --git a/ioctl/client_test.go b/ioctl/client_test.go
index 27891534f3..a72da30fa7 100644
--- a/ioctl/client_test.go
+++ b/ioctl/client_test.go
@@ -38,9 +38,10 @@ func TestAskToConfirm(t *testing.T) {
 	r := require.New(t)
 	c := NewClient(config.Config{}, "")
 	defer c.Stop(context.Background())
-	blang := c.AskToConfirm("test")
+	confirmed, err := c.AskToConfirm("test")
 	// no input
-	r.False(blang)
+	r.Equal("EOF", err.Error())
+	r.False(confirmed)
 }
 
 func TestAPIServiceClient(t *testing.T) {
diff --git a/ioctl/cmd/account/accountcreateadd.go b/ioctl/cmd/account/accountcreateadd.go
index 89e3d86a1c..07cb54aeea 100644
--- a/ioctl/cmd/account/accountcreateadd.go
+++ b/ioctl/cmd/account/accountcreateadd.go
@@ -56,7 +56,9 @@ func accountCreateAdd(args []string) error {
 			"but bind the alias to the new one.\nWould you like to continue?\n", alias, addr)
 		message := output.ConfirmationMessage{Info: info, Options: []string{"yes"}}
 		fmt.Println(message.String())
-		fmt.Scanf("%s", &confirm)
+		if _, err := fmt.Scanf("%s", &confirm); err != nil {
+			return output.NewError(output.InputError, "failed to input yes", err)
+		}
 		if !strings.EqualFold(confirm, "yes") {
 			output.PrintResult("quit")
 			return nil
diff --git a/ioctl/cmd/account/accountdelete.go b/ioctl/cmd/account/accountdelete.go
index 502f8f1824..aea60ef8ae 100644
--- a/ioctl/cmd/account/accountdelete.go
+++ b/ioctl/cmd/account/accountdelete.go
@@ -91,7 +91,9 @@ func accountDelete(arg string) error {
 		"Type 'YES' to continue, quit for anything else.")
 	message := output.ConfirmationMessage{Info: info, Options: []string{"yes"}}
 	fmt.Println(message.String())
-	fmt.Scanf("%s", &confirm)
+	if _, err := fmt.Scanf("%s", &confirm); err != nil {
+		return output.NewError(output.InputError, "failed to input yes", err)
+	}
 	if !strings.EqualFold(confirm, "yes") {
 		output.PrintResult("quit")
 		return nil
diff --git a/ioctl/cmd/action/action.go b/ioctl/cmd/action/action.go
index b735a04541..b944174f84 100644
--- a/ioctl/cmd/action/action.go
+++ b/ioctl/cmd/action/action.go
@@ -295,7 +295,9 @@ func SendAction(elp action.Envelope, signer string) error {
 		message := output.ConfirmationMessage{Info: info, Options: []string{"yes"}}
 		fmt.Println(message.String())
 
-		fmt.Scanf("%s", &confirm)
+		if _, err := fmt.Scanf("%s", &confirm); err != nil {
+			return output.NewError(output.InputError, "failed to input yes", err)
+		}
 		if !strings.EqualFold(confirm, "yes") {
 			output.PrintResult("quit")
 			return nil
diff --git a/ioctl/cmd/action/xrc20.go b/ioctl/cmd/action/xrc20.go
index 1718d73e15..d857bdf84f 100644
--- a/ioctl/cmd/action/xrc20.go
+++ b/ioctl/cmd/action/xrc20.go
@@ -83,7 +83,9 @@ func init() {
 		config.ReadConfig.Endpoint, config.TranslateInLang(_flagXrc20EndPointUsages, config.UILanguage))
 	Xrc20Cmd.PersistentFlags().BoolVar(&config.Insecure, "insecure", config.Insecure,
 		config.TranslateInLang(_flagXrc20InsecureUsages, config.UILanguage))
-	cobra.MarkFlagRequired(Xrc20Cmd.PersistentFlags(), "contract-address")
+	if err := cobra.MarkFlagRequired(Xrc20Cmd.PersistentFlags(), "contract-address"); err != nil {
+		fmt.Printf("failed to mark flag: %v\n", err)
+	}
 }
 
 func parseAmount(contract address.Address, amount string) (*big.Int, error) {
diff --git a/ioctl/cmd/contract/contractshare.go b/ioctl/cmd/contract/contractshare.go
index cb89582290..b1fc5d4ab0 100644
--- a/ioctl/cmd/contract/contractshare.go
+++ b/ioctl/cmd/contract/contractshare.go
@@ -102,7 +102,9 @@ func isReadOnly(path string) bool {
 		}
 		readOnly = true
 	}
-	file.Close()
+	if err = file.Close(); err != nil {
+		log.Printf("fialed to close file: %v", err)
+	}
 	return readOnly
 }
 
@@ -140,7 +142,7 @@ func share(args []string) error {
 		return output.NewError(output.FlagError, "failed to get IoTeX ide url instance", nil)
 	}
 
-	filepath.Walk(_givenPath, func(path string, info os.FileInfo, err error) error {
+	if err := filepath.Walk(_givenPath, func(path string, info os.FileInfo, err error) error {
 		if !isDir(path) {
 			relPath, err := filepath.Rel(_givenPath, path)
 			if err != nil {
@@ -152,7 +154,9 @@ func share(args []string) error {
 			}
 		}
 		return nil
-	})
+	}); err != nil {
+		return output.NewError(output.ReadFileError, "failed to walk directory", err)
+	}
 
 	log.Printf("Listening on 127.0.0.1:65520, Please open your IDE ( %s ) to connect to local files", _iotexIDE)
 
diff --git a/ioctl/cmd/hdwallet/hdwalletdelete.go b/ioctl/cmd/hdwallet/hdwalletdelete.go
index 260c253798..b98c283078 100644
--- a/ioctl/cmd/hdwallet/hdwalletdelete.go
+++ b/ioctl/cmd/hdwallet/hdwalletdelete.go
@@ -44,7 +44,9 @@ func hdwalletDelete() error {
 		"Type 'YES' to continue, quit for anything else.")
 	message := output.ConfirmationMessage{Info: info, Options: []string{"yes"}}
 	fmt.Println(message.String())
-	fmt.Scanf("%s", &confirm)
+	if _, err := fmt.Scanf("%s", &confirm); err != nil {
+		return output.NewError(output.InputError, "failed to input yes", err)
+	}
 	if !strings.EqualFold(confirm, "yes") {
 		output.PrintResult("quit")
 		return nil
diff --git a/ioctl/cmd/node/nodedelegate.go b/ioctl/cmd/node/nodedelegate.go
index bff2272350..c6ca3a3f03 100644
--- a/ioctl/cmd/node/nodedelegate.go
+++ b/ioctl/cmd/node/nodedelegate.go
@@ -253,7 +253,9 @@ func delegatesV2(pb *vote.ProbationList, epochMeta *iotexapi.GetEpochMetaRespons
 			ProbatedStatus: isProbated,
 		})
 	}
-	fillMessage(cli, message, aliases, isActive, pb)
+	if err = fillMessage(cli, message, aliases, isActive, pb); err != nil {
+		return err
+	}
 	return sortAndPrint(message)
 }
 
diff --git a/ioctl/config/configsetget.go b/ioctl/config/configsetget.go
index 5da1d8cc3c..3ae20b2ad4 100644
--- a/ioctl/config/configsetget.go
+++ b/ioctl/config/configsetget.go
@@ -239,7 +239,9 @@ func set(args []string) error {
 		case args[1] == "custom":
 			output.PrintQuery(`Please enter a custom link below:("Example: iotexscan.io/action/")`)
 			var link string
-			fmt.Scanln(&link)
+			if _, err := fmt.Scanln(&link); err != nil {
+				return output.NewError(output.InputError, "failed to input link", err)
+			}
 			match, err := regexp.MatchString(_urlPattern, link)
 			if err != nil {
 				return output.NewError(output.UndefinedError, "failed to validate link", nil)
diff --git a/ioctl/flag/flag.go b/ioctl/flag/flag.go
index 6069c74059..01610291e9 100644
--- a/ioctl/flag/flag.go
+++ b/ioctl/flag/flag.go
@@ -7,6 +7,8 @@
 package flag
 
 import (
+	"fmt"
+
 	"github.com/spf13/cobra"
 
 	"github.com/iotexproject/iotex-core/ioctl/config"
@@ -57,7 +59,9 @@ type (
 )
 
 func (f *flagBase) MarkFlagRequired(cmd *cobra.Command) {
-	cmd.MarkFlagRequired(f.label)
+	if err := cmd.MarkFlagRequired(f.label); err != nil {
+		fmt.Printf("failed to mark flag %s: %v\n", f.label, err)
+	}
 }
 
 func (f *flagBase) Label() string {
diff --git a/ioctl/newcmd/account/accountcreateadd.go b/ioctl/newcmd/account/accountcreateadd.go
index 57762732d9..4737e16b33 100644
--- a/ioctl/newcmd/account/accountcreateadd.go
+++ b/ioctl/newcmd/account/accountcreateadd.go
@@ -71,7 +71,11 @@ func NewAccountCreateAdd(client ioctl.Client) *cobra.Command {
 			}
 
 			if addr, ok := client.Config().Aliases[args[0]]; ok {
-				if !client.AskToConfirm(fmt.Sprintf(_aliasHasAlreadyUsed, args[0], addr)) {
+				confirmed, err := client.AskToConfirm(fmt.Sprintf(_aliasHasAlreadyUsed, args[0], addr))
+				if err != nil {
+					return errors.Wrap(err, "failed to ask confirm")
+				}
+				if !confirmed {
 					cmd.Println(infoQuit)
 					return nil
 				}
diff --git a/ioctl/newcmd/account/accountcreateadd_test.go b/ioctl/newcmd/account/accountcreateadd_test.go
index 7d6c8bc679..ab6be5f8be 100644
--- a/ioctl/newcmd/account/accountcreateadd_test.go
+++ b/ioctl/newcmd/account/accountcreateadd_test.go
@@ -29,7 +29,7 @@ func TestNewAccountCreateAdd(t *testing.T) {
 	require.NoError(err)
 
 	client.EXPECT().ReadSecret().Return(pwd, nil).Times(4)
-	client.EXPECT().AskToConfirm(gomock.Any()).Return(true).Times(2)
+	client.EXPECT().AskToConfirm(gomock.Any()).Return(true, nil).Times(2)
 	client.EXPECT().Config().Return(config.Config{
 		Wallet: testWallet,
 		Aliases: map[string]string{
@@ -57,7 +57,7 @@ func TestNewAccountCreateAdd(t *testing.T) {
 	})
 
 	t.Run("failed to confirm", func(t *testing.T) {
-		client.EXPECT().AskToConfirm(gomock.Any()).Return(false)
+		client.EXPECT().AskToConfirm(gomock.Any()).Return(false, nil)
 
 		cmd := NewAccountCreateAdd(client)
 		_, err := util.ExecuteCmd(cmd, "aaa")
diff --git a/ioctl/newcmd/account/accountdelete.go b/ioctl/newcmd/account/accountdelete.go
index 2c5249dfc4..f79cf11160 100644
--- a/ioctl/newcmd/account/accountdelete.go
+++ b/ioctl/newcmd/account/accountdelete.go
@@ -120,14 +120,18 @@ func NewAccountDelete(client ioctl.Client) *cobra.Command {
 			if _, err = os.Stat(filePath); err != nil {
 				return errors.Wrapf(err, _failToFindAccount, addr)
 			}
-			if !client.AskToConfirm(_infoWarn) {
+			confirmed, err := client.AskToConfirm(_infoWarn)
+			if err != nil {
+				return errors.Wrap(err, "failed to ask confirm")
+			}
+			if !confirmed {
 				cmd.Println(_infoQuit)
 				return nil
 			}
-			if err := os.Remove(filePath); err != nil {
+			if err = os.Remove(filePath); err != nil {
 				return errors.Wrap(err, _failToRemoveKeystoreFile)
 			}
-			if err := client.DeleteAlias(client.AliasMap()[addr]); err != nil {
+			if err = client.DeleteAlias(client.AliasMap()[addr]); err != nil {
 				return errors.Wrap(err, _failToWriteToConfigFile)
 			}
 			cmd.Println(fmt.Sprintf(_resultSuccess, addr))
diff --git a/ioctl/newcmd/account/accountdelete_test.go b/ioctl/newcmd/account/accountdelete_test.go
index c25e8a448b..923a3ababa 100644
--- a/ioctl/newcmd/account/accountdelete_test.go
+++ b/ioctl/newcmd/account/accountdelete_test.go
@@ -44,12 +44,12 @@ func TestNewAccountDelete(t *testing.T) {
 			"io1uwnr55vqmhf3xeg5phgurlyl702af6eju542s1": "ccc",
 		})
 
-		client.EXPECT().AskToConfirm(gomock.Any()).Return(false)
+		client.EXPECT().AskToConfirm(gomock.Any()).Return(false, nil)
 		cmd := NewAccountDelete(client)
 		_, err := util.ExecuteCmd(cmd)
 		require.NoError(err)
 
-		client.EXPECT().AskToConfirm(gomock.Any()).Return(true)
+		client.EXPECT().AskToConfirm(gomock.Any()).Return(true, nil)
 		client.EXPECT().DeleteAlias("aaa").Return(nil)
 		cmd = NewAccountDelete(client)
 		result, err := util.ExecuteCmd(cmd)
@@ -82,7 +82,7 @@ func TestNewAccountDelete(t *testing.T) {
 		crypto.WritePrivateKeyToPem(pemFilePath, priKey2.(*crypto.P256sm2PrvKey), "test")
 		client.EXPECT().AddressWithDefaultIfNotExist(gomock.Any()).Return(addr2.String(), nil)
 
-		client.EXPECT().AskToConfirm(gomock.Any()).Return(true)
+		client.EXPECT().AskToConfirm(gomock.Any()).Return(true, nil)
 		client.EXPECT().DeleteAlias("aaa").Return(nil)
 		cmd := NewAccountDelete(client)
 		result, err := util.ExecuteCmd(cmd)
diff --git a/ioctl/newcmd/action/action.go b/ioctl/newcmd/action/action.go
index 802aa14752..eb94bd16cb 100644
--- a/ioctl/newcmd/action/action.go
+++ b/ioctl/newcmd/action/action.go
@@ -396,10 +396,14 @@ func SendAction(client ioctl.Client, cmd *cobra.Command, elp action.Envelope, si
 	if !getAssumeYesFlagValue(cmd) {
 		infoWarn := selectTranslation(client, _infoWarn)
 		infoQuit := selectTranslation(client, _infoQuit)
-		if !client.AskToConfirm(infoWarn) {
+		confirmed, err := client.AskToConfirm(infoWarn)
+		if err != nil {
+			return errors.Wrap(err, "failed to ask confirm")
+		}
+		if !confirmed {
 			cmd.Println(infoQuit)
+			return nil
 		}
-		return nil
 	}
 
 	return SendRaw(client, cmd, selp)
diff --git a/ioctl/newcmd/hdwallet/hdwalletdelete.go b/ioctl/newcmd/hdwallet/hdwalletdelete.go
index 7eeead1676..0b5c659673 100644
--- a/ioctl/newcmd/hdwallet/hdwalletdelete.go
+++ b/ioctl/newcmd/hdwallet/hdwalletdelete.go
@@ -9,6 +9,7 @@ package hdwallet
 import (
 	"fmt"
 
+	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
 
 	"github.com/iotexproject/iotex-core/ioctl"
@@ -36,7 +37,11 @@ func NewHdwalletDeleteCmd(client ioctl.Client) *cobra.Command {
 			info := fmt.Sprintf("** This is an irreversible action!\n" +
 				"Once an hdwallet is deleted, all the assets under this hdwallet may be lost!\n" +
 				"Type 'YES' to continue, quit for anything else.")
-			if !client.AskToConfirm(info) {
+			confirmed, err := client.AskToConfirm(info)
+			if err != nil {
+				return errors.Wrap(err, "failed to ask confirm")
+			}
+			if !confirmed {
 				cmd.Println("quit")
 				return nil
 			}
diff --git a/ioctl/newcmd/hdwallet/hdwalletdelete_test.go b/ioctl/newcmd/hdwallet/hdwalletdelete_test.go
index a51131894b..b0df5819af 100644
--- a/ioctl/newcmd/hdwallet/hdwalletdelete_test.go
+++ b/ioctl/newcmd/hdwallet/hdwalletdelete_test.go
@@ -25,7 +25,7 @@ func TestNewHdwalletDeleteCmd(t *testing.T) {
 	client.EXPECT().SelectTranslation(gomock.Any()).Return("mockTranslationString", config.English).Times(4)
 
 	t.Run("delete hdwallet", func(t *testing.T) {
-		client.EXPECT().AskToConfirm(gomock.Any()).Return(true)
+		client.EXPECT().AskToConfirm(gomock.Any()).Return(true, nil)
 		client.EXPECT().RemoveHdWalletConfigFile().Return(nil)
 
 		cmd := NewHdwalletDeleteCmd(client)
@@ -35,7 +35,7 @@ func TestNewHdwalletDeleteCmd(t *testing.T) {
 	})
 
 	t.Run("quit hdwallet delete command", func(t *testing.T) {
-		client.EXPECT().AskToConfirm(gomock.Any()).Return(false)
+		client.EXPECT().AskToConfirm(gomock.Any()).Return(false, nil)
 
 		cmd := NewHdwalletDeleteCmd(client)
 		result, err := util.ExecuteCmd(cmd)
diff --git a/ioctl/newcmd/update/update.go b/ioctl/newcmd/update/update.go
index 7f4127b117..b20767b2a9 100644
--- a/ioctl/newcmd/update/update.go
+++ b/ioctl/newcmd/update/update.go
@@ -86,13 +86,17 @@ func NewUpdateCmd(c ioctl.Client) *cobra.Command {
 				return errors.New(fmt.Sprintf(invalidVersionType, versionType))
 			}
 
-			if !c.AskToConfirm(_infoWarn) {
+			confirmed, err := c.AskToConfirm(_infoWarn)
+			if err != nil {
+				return errors.Wrap(err, "failed to ask confirm")
+			}
+			if !confirmed {
 				cmd.Println(_infoQuit)
 				return nil
 			}
 			cmd.Printf(info, versionType)
 
-			if err := c.Execute(cmdString); err != nil {
+			if err = c.Execute(cmdString); err != nil {
 				return errors.Wrap(err, fail)
 			}
 			cmd.Println(success)
diff --git a/ioctl/newcmd/update/update_test.go b/ioctl/newcmd/update/update_test.go
index 223171b76e..ed5dc4ecc1 100644
--- a/ioctl/newcmd/update/update_test.go
+++ b/ioctl/newcmd/update/update_test.go
@@ -26,7 +26,7 @@ func TestNewUpdateCmd(t *testing.T) {
 	expectedValue := "ioctl is up-to-date now."
 	client.EXPECT().SelectTranslation(gomock.Any()).Return(expectedValue,
 		config.English).Times(18)
-	client.EXPECT().AskToConfirm(gomock.Any()).Return(true).Times(2)
+	client.EXPECT().AskToConfirm(gomock.Any()).Return(true, nil).Times(2)
 	client.EXPECT().Execute(gomock.Any()).Return(nil).Times(2)
 
 	t.Run("update cli with stable", func(t *testing.T) {
@@ -47,7 +47,7 @@ func TestNewUpdateCmd(t *testing.T) {
 		expectedError := errors.New("failed to execute bash command")
 		client.EXPECT().SelectTranslation(gomock.Any()).Return("mockTranslationResult",
 			config.English).Times(9)
-		client.EXPECT().AskToConfirm(gomock.Any()).Return(true).Times(1)
+		client.EXPECT().AskToConfirm(gomock.Any()).Return(true, nil).Times(1)
 		client.EXPECT().Execute(gomock.Any()).Return(expectedError).Times(1)
 
 		cmd := NewUpdateCmd(client)
diff --git a/pkg/compress/compress.go b/pkg/compress/compress.go
index e4d4b276a3..bdebd2d1a0 100644
--- a/pkg/compress/compress.go
+++ b/pkg/compress/compress.go
@@ -61,12 +61,13 @@ func CompGzip(data []byte) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	_, err = w.Write(data)
-	if err != nil {
-		w.Close()
+	if _, err = w.Write(data); err != nil {
+		err = w.Close()
+		return nil, err
+	}
+	if err = w.Close(); err != nil {
 		return nil, err
 	}
-	w.Close()
 	output := bb.Bytes()
 	return output, nil
 }
@@ -77,7 +78,9 @@ func DecompGzip(data []byte) ([]byte, error) {
 	if err != nil {
 		return nil, err
 	}
-	r.Close()
+	if err = r.Close(); err != nil {
+		return nil, err
+	}
 	return io.ReadAll(r)
 }
 
diff --git a/state/account.go b/state/account.go
index 8b128caea9..b6c8844dbf 100644
--- a/state/account.go
+++ b/state/account.go
@@ -102,7 +102,7 @@ func (st *Account) FromProto(acPb *accountpb.Account) {
 	} else {
 		balance, ok := new(big.Int).SetString(acPb.Balance, 10)
 		if !ok {
-			errors.Errorf("invalid balance %s", acPb.Balance)
+			panic(errors.Errorf("invalid balance %s", acPb.Balance))
 		}
 		st.Balance = balance
 	}
diff --git a/test/mock/mock_ioctlclient/mock_ioctlclient.go b/test/mock/mock_ioctlclient/mock_ioctlclient.go
index e60fcf4ddd..dbfd5287b8 100644
--- a/test/mock/mock_ioctlclient/mock_ioctlclient.go
+++ b/test/mock/mock_ioctlclient/mock_ioctlclient.go
@@ -114,11 +114,12 @@ func (mr *MockClientMockRecorder) AliasMap() *gomock.Call {
 }
 
 // AskToConfirm mocks base method.
-func (m *MockClient) AskToConfirm(arg0 string) bool {
+func (m *MockClient) AskToConfirm(arg0 string) (bool, error) {
 	m.ctrl.T.Helper()
 	ret := m.ctrl.Call(m, "AskToConfirm", arg0)
 	ret0, _ := ret[0].(bool)
-	return ret0
+	ret1, _ := ret[1].(error)
+	return ret0, ret1
 }
 
 // AskToConfirm indicates an expected call of AskToConfirm.
diff --git a/tools/actioninjector.v2/internal/cmd/inject.go b/tools/actioninjector.v2/internal/cmd/inject.go
index 145e861bfe..b017c4fd7d 100644
--- a/tools/actioninjector.v2/internal/cmd/inject.go
+++ b/tools/actioninjector.v2/internal/cmd/inject.go
@@ -23,6 +23,7 @@ import (
 
 	"github.com/cenkalti/backoff"
 	"github.com/ethereum/go-ethereum/accounts/abi"
+	"github.com/iotexproject/go-pkgs/cache/ttl"
 	"github.com/iotexproject/go-pkgs/crypto"
 	"github.com/iotexproject/go-pkgs/hash"
 	"github.com/iotexproject/iotex-address/address"
@@ -36,7 +37,6 @@ import (
 	"google.golang.org/grpc/credentials"
 	yaml "gopkg.in/yaml.v2"
 
-	"github.com/iotexproject/go-pkgs/cache/ttl"
 	"github.com/iotexproject/iotex-core/pkg/log"
 )
 
@@ -87,7 +87,9 @@ func newInjectionProcessor() (*injectProcessor, error) {
 		api:    api,
 		nonces: nonceCache,
 	}
-	p.randAccounts(injectCfg.randAccounts)
+	if err = p.randAccounts(injectCfg.randAccounts); err != nil {
+		return p, err
+	}
 	if injectCfg.loadTokenAmount.BitLen() != 0 {
 		if err := p.loadAccounts(injectCfg.configPath); err != nil {
 			return p, err
@@ -395,7 +397,7 @@ func inject(_ []string) string {
 	executionAmount := big.NewInt(rawInjectCfg.executionAmount)
 	loadTokenAmount, ok := new(big.Int).SetString(rawInjectCfg.loadTokenAmount, 10)
 	if !ok {
-		errors.New("failed to load token amount")
+		return fmt.Sprint("failed to load token amount")
 	}
 
 	injectCfg.configPath = rawInjectCfg.configPath
diff --git a/tools/iomigrater/cmds/migrate-db.go b/tools/iomigrater/cmds/migrate-db.go
index 0af5bbf764..2108c4c841 100644
--- a/tools/iomigrater/cmds/migrate-db.go
+++ b/tools/iomigrater/cmds/migrate-db.go
@@ -86,7 +86,7 @@ func getProgressMod(num uint64) (int, int) {
 	return numInt, step
 }
 
-func migrateDbFile() error {
+func migrateDbFile() (err error) {
 	// Check flags
 	if oldFile == "" {
 		return fmt.Errorf("--old-file is empty")
@@ -129,8 +129,8 @@ func migrateDbFile() error {
 	}
 
 	defer func() {
-		oldDAO.Stop(ctx)
-		newDAO.Stop(ctx)
+		err = oldDAO.Stop(ctx)
+		err = newDAO.Stop(ctx)
 	}()
 
 	// Show the progressbar
@@ -152,12 +152,16 @@ func migrateDbFile() error {
 		}
 
 		if i%uint64(step) == 0 {
-			bar.Add(1)
+			if err = bar.Add(1); err != nil {
+				return fmt.Errorf("failed to add 1 on bar on height %d: %v", i, err)
+			}
 			intHeight--
 		}
 	}
 	if intHeight > 0 {
-		bar.Add(intHeight)
+		if err = bar.Add(intHeight); err != nil {
+			return fmt.Errorf("failed to add %d on bar: %v", intHeight, err)
+		}
 	}
 
 	return nil