diff --git a/core/vm/vm.go b/core/vm/vm.go
index f4bf1ca72a6cad4be45f95dd5a27b920de3d667e..2ece5b9283f4d2af447b840fa981341e5f2410d4 100644
--- a/core/vm/vm.go
+++ b/core/vm/vm.go
@@ -5,8 +5,8 @@ import (
 	"math/big"
 
 	"github.com/ethereum/go-ethereum/common"
-	"github.com/ethereum/go-ethereum/crypto"
 	"github.com/ethereum/go-ethereum/core/state"
+	"github.com/ethereum/go-ethereum/crypto"
 )
 
 type Vm struct {
@@ -34,6 +34,8 @@ func New(env Environment) *Vm {
 
 func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
 	self.env.SetDepth(self.env.Depth() + 1)
+	defer self.env.SetDepth(self.env.Depth() - 1)
+
 	var (
 		caller = context.caller
 		code   = context.Code