diff --git a/cmd/db-server/main.go b/cmd/db-server/main.go
index 83986af6cfa7d8e4707676fd1ddc9246b5322284..0c25e9370053427a3ce1f50bd3c01a83dfd0d3cb 100644
--- a/cmd/db-server/main.go
+++ b/cmd/db-server/main.go
@@ -70,6 +70,8 @@ const (
 	WaitCubeStartExit       = 11
 	StartMOExit             = 12
 	CreateTpeExit           = 13
+	RunRPCExit              = 14
+	ShutdownExit            = 15
 )
 
 var (
@@ -97,8 +99,8 @@ func runMOServer() error {
 	return mo.Start()
 }
 
-func serverShutdown(isgraceful bool) {
-	mo.Stop()
+func serverShutdown(isgraceful bool) error {
+	return mo.Stop()
 }
 
 func waitSignal() {
@@ -320,7 +322,12 @@ func main() {
 		os.Exit(WaitCubeStartExit)
 	}
 
-	go srv.Run()
+	go func() {
+		if err := srv.Run(); err != nil {
+			logutil.Infof("Start rpcserver failed, %v", err)
+			os.Exit(RunRPCExit)
+		}
+	}()
 	//test storage aoe_storage
 	config.StorageEngine = eng
 
@@ -341,7 +348,10 @@ func main() {
 
 	waitSignal()
 	//srv.Stop()
-	serverShutdown(true)
+	if err := serverShutdown(true); err != nil {
+		logutil.Infof("Server shutdown failed, %v", err)
+		os.Exit(ShutdownExit)
+	}
 
 	cleanup()
 }
diff --git a/pkg/container/batch/batch.go b/pkg/container/batch/batch.go
index 4e5df73a8dc6d5e9e84de1dc6704daeb905378bf..ed573168bb5dd93e3d55b36bad4c6a3a7614f7aa 100644
--- a/pkg/container/batch/batch.go
+++ b/pkg/container/batch/batch.go
@@ -80,7 +80,9 @@ func Shuffle(bat *Batch, m *mheap.Mheap) error {
 			}
 		}
 		for _, r := range bat.Rs {
-			r.Shuffle(bat.Sels, m)
+			if err := r.Shuffle(bat.Sels, m); err != nil {
+				return err
+			}
 		}
 		data, err := mheap.Alloc(m, int64(len(bat.Zs))*8)
 		if err != nil {
diff --git a/pkg/frontend/mysql_cmd_executor.go b/pkg/frontend/mysql_cmd_executor.go
index 4752ccebc6fc97305cf1fb82da47fb5ff3f2a269..6a521147c2d76c722d36a990bc12954c74b57117 100644
--- a/pkg/frontend/mysql_cmd_executor.go
+++ b/pkg/frontend/mysql_cmd_executor.go
@@ -235,7 +235,9 @@ func getDataFromPipeline(obj interface{}, bat *batch.Batch) error {
 	n := vector.Length(bat.Vecs[0])
 
 	if enableProfile {
-		pprof.StartCPUProfile(cpuf)
+		if err := pprof.StartCPUProfile(cpuf); err != nil {
+			return err
+		}
 	}
 	for j := 0; j < n; j++ { //row index
 		if oq.ep.Outfile {
diff --git a/pkg/rpcserver/codec.go b/pkg/rpcserver/codec.go
index 48ca77a3ff0314b4f36676208f3fe9574aece44c..14ed44bdce716c5623870db3f2e83327b9feaabe 100644
--- a/pkg/rpcserver/codec.go
+++ b/pkg/rpcserver/codec.go
@@ -53,6 +53,8 @@ func (c *rpcCodec) Encode(data interface{}, out *buf.ByteBuf) error {
 	index := out.GetWriteIndex()
 	out.Expansion(size)
 	protoc.MustMarshalTo(v, out.RawBuf()[index:index+size])
-	out.SetWriterIndex(index + size)
+	if err := out.SetWriterIndex(index + size); err != nil {
+		return err
+	}
 	return nil
 }
diff --git a/pkg/rpcserver/server.go b/pkg/rpcserver/server.go
index afb0dc6d05f79917d1c0982bdbc180b885a651c4..290fdc813219640917545ff123ac7abc0d3ff8c6 100644
--- a/pkg/rpcserver/server.go
+++ b/pkg/rpcserver/server.go
@@ -16,6 +16,7 @@ package rpcserver
 
 import (
 	"fmt"
+
 	"github.com/matrixorigin/matrixone/pkg/rpcserver/message"
 	"go.uber.org/zap"
 
diff --git a/pkg/sql/colexec/connector/connector.go b/pkg/sql/colexec/connector/connector.go
index c90c731e78836d3911cea6a89cae0ddc8542dc21..2b84eb68f87a209e03f166d84a50592e417a8072 100644
--- a/pkg/sql/colexec/connector/connector.go
+++ b/pkg/sql/colexec/connector/connector.go
@@ -70,7 +70,9 @@ func Call(proc *process.Process, arg interface{}) (bool, error) {
 		process.FreeRegisters(proc)
 		return true, nil
 	case reg.Ch <- bat:
-		n.Mmu.Alloc(size)
+		if err := n.Mmu.Alloc(size); err != nil {
+			return false, err
+		}
 		proc.Mp.Gm.Free(size)
 		return false, nil
 	}
diff --git a/pkg/sql/colexec/order/order.go b/pkg/sql/colexec/order/order.go
index 006c44bdd29861130d86d1847a29a4c8e1d16750..2d519ae15691d9ac383abf9f41a0578a33d7863a 100644
--- a/pkg/sql/colexec/order/order.go
+++ b/pkg/sql/colexec/order/order.go
@@ -17,6 +17,7 @@ package order
 import (
 	"bytes"
 	"fmt"
+
 	"github.com/matrixorigin/matrixone/pkg/container/batch"
 	"github.com/matrixorigin/matrixone/pkg/encoding"
 	"github.com/matrixorigin/matrixone/pkg/partition"
@@ -79,7 +80,9 @@ func (ctr *Container) process(bat *batch.Batch, proc *process.Process) (bool, er
 	if len(ctr.attrs) == 1 {
 		bat.Sels = sels
 		bat.SelsData = data
-		batch.Shuffle(bat, proc.Mp)
+		if err := batch.Shuffle(bat, proc.Mp); err != nil {
+			panic(err)
+		}
 		return false, nil
 	}
 	ps := make([]int64, 0, 16)
@@ -99,6 +102,8 @@ func (ctr *Container) process(bat *batch.Batch, proc *process.Process) (bool, er
 	}
 	bat.Sels = sels
 	bat.SelsData = data
-	batch.Shuffle(bat, proc.Mp)
+	if err := batch.Shuffle(bat, proc.Mp); err != nil {
+		panic(err)
+	}
 	return false, nil
 }
diff --git a/pkg/sql/colexec2/order/order.go b/pkg/sql/colexec2/order/order.go
index ccd613517a74d260ccc755c562fcedb0f1a9dbb6..80f916d842d57df8aa42e13366f2b144c8ea9d07 100644
--- a/pkg/sql/colexec2/order/order.go
+++ b/pkg/sql/colexec2/order/order.go
@@ -68,7 +68,9 @@ func (ctr *Container) process(bat *batch.Batch, proc *process.Process) (bool, er
 	}
 	sort.Sort(ctr.ds[0], sels, ovec)
 	if len(ctr.poses) == 1 {
-		batch.Shuffle(bat, sels, proc.Mp)
+		if err := batch.Shuffle(bat, sels, proc.Mp); err != nil {
+			panic(err)
+		}
 		return false, nil
 	}
 	ps := make([]int64, 0, 16)
@@ -86,6 +88,8 @@ func (ctr *Container) process(bat *batch.Batch, proc *process.Process) (bool, er
 		}
 		ovec = vec
 	}
-	batch.Shuffle(bat, sels, proc.Mp)
+	if err := batch.Shuffle(bat, sels, proc.Mp); err != nil {
+		panic(err)
+	}
 	return false, nil
 }