Skip to content

Commit 43a75bb

Browse files
authored
Merge pull request microsoft#951 from ambarve/shim_panic_logs
Log shim panic logs in containerd.
2 parents 7001566 + 11ec1d1 commit 43a75bb

3 files changed

Lines changed: 8 additions & 33 deletions

File tree

cmd/containerd-shim-runhcs-v1/delete.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"io/ioutil"
88
"os"
9+
"path/filepath"
910
"time"
1011

1112
"github.com/Microsoft/hcsshim/internal/hcs"
@@ -29,7 +30,6 @@ The delete command will be executed in the container's bundle as its cwd.
2930
// We cant write anything to stdout for this cmd other than the
3031
// task.DeleteResponse by protcol. We can write to stderr which will be
3132
// warning logged in containerd.
32-
logrus.SetOutput(ioutil.Discard)
3333

3434
ctx, span := trace.StartSpan(gcontext.Background(), "delete")
3535
defer span.End()
@@ -82,6 +82,13 @@ The delete command will be executed in the container's bundle as its cwd.
8282
}
8383
}
8484

85+
// hcsshim shim writes panic logs in the bundle directory in a file named "panic.log"
86+
// log those messages (if any) on stderr so that it shows up in containerd's log.
87+
logs, err := ioutil.ReadFile(filepath.Join(bundleFlag, "panic.log"))
88+
if err == nil && len(logs) > 0 {
89+
logrus.WithField("log", string(logs)).Error("found shim panic logs during delete")
90+
}
91+
8592
// Remove the bundle on disk
8693
if err := os.RemoveAll(bundleFlag); err != nil && !os.IsNotExist(err) {
8794
return err

cmd/containerd-shim-runhcs-v1/main.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,6 @@ func stack() []byte {
5555
}
5656
}
5757

58-
func panicRecover() {
59-
if r := recover(); r != nil {
60-
logrus.WithFields(logrus.Fields{
61-
"panic": r,
62-
"stack": string(stack()),
63-
}).Error("containerd-shim-runhcs-v1: panic")
64-
}
65-
}
66-
6758
func etwCallback(sourceID guid.GUID, state etw.ProviderState, level etw.Level, matchAnyKeyword uint64, matchAllKeyword uint64, filterData uintptr) {
6859
if state == etw.ProviderStateCaptureState {
6960
resp, err := svc.DiagStacks(context.Background(), &shimdiag.StacksRequest{})
@@ -92,8 +83,6 @@ func main() {
9283
}
9384
}
9485

95-
defer panicRecover()
96-
9786
provider.WriteEvent(
9887
"ShimLaunched",
9988
nil,

cmd/containerd-shim-runhcs-v1/service.go

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ type service struct {
5353
}
5454

5555
func (s *service) State(ctx context.Context, req *task.StateRequest) (resp *task.StateResponse, err error) {
56-
defer panicRecover()
5756
ctx, span := trace.StartSpan(ctx, "State")
5857
defer span.End()
5958
defer func() {
@@ -79,7 +78,6 @@ func (s *service) State(ctx context.Context, req *task.StateRequest) (resp *task
7978
}
8079

8180
func (s *service) Create(ctx context.Context, req *task.CreateTaskRequest) (resp *task.CreateTaskResponse, err error) {
82-
defer panicRecover()
8381
ctx, span := trace.StartSpan(ctx, "Create")
8482
defer span.End()
8583
defer func() {
@@ -110,7 +108,6 @@ func (s *service) Create(ctx context.Context, req *task.CreateTaskRequest) (resp
110108
}
111109

112110
func (s *service) Start(ctx context.Context, req *task.StartRequest) (resp *task.StartResponse, err error) {
113-
defer panicRecover()
114111
ctx, span := trace.StartSpan(ctx, "Start")
115112
defer span.End()
116113
defer func() {
@@ -133,7 +130,6 @@ func (s *service) Start(ctx context.Context, req *task.StartRequest) (resp *task
133130
}
134131

135132
func (s *service) Delete(ctx context.Context, req *task.DeleteRequest) (resp *task.DeleteResponse, err error) {
136-
defer panicRecover()
137133
ctx, span := trace.StartSpan(ctx, "Delete")
138134
defer span.End()
139135
defer func() {
@@ -159,7 +155,6 @@ func (s *service) Delete(ctx context.Context, req *task.DeleteRequest) (resp *ta
159155
}
160156

161157
func (s *service) Pids(ctx context.Context, req *task.PidsRequest) (_ *task.PidsResponse, err error) {
162-
defer panicRecover()
163158
ctx, span := trace.StartSpan(ctx, "Pids")
164159
defer span.End()
165160
defer func() { oc.SetSpanStatus(span, err) }()
@@ -175,7 +170,6 @@ func (s *service) Pids(ctx context.Context, req *task.PidsRequest) (_ *task.Pids
175170
}
176171

177172
func (s *service) Pause(ctx context.Context, req *task.PauseRequest) (_ *google_protobuf1.Empty, err error) {
178-
defer panicRecover()
179173
ctx, span := trace.StartSpan(ctx, "Pause")
180174
defer span.End()
181175
defer func() { oc.SetSpanStatus(span, err) }()
@@ -191,7 +185,6 @@ func (s *service) Pause(ctx context.Context, req *task.PauseRequest) (_ *google_
191185
}
192186

193187
func (s *service) Resume(ctx context.Context, req *task.ResumeRequest) (_ *google_protobuf1.Empty, err error) {
194-
defer panicRecover()
195188
ctx, span := trace.StartSpan(ctx, "Resume")
196189
defer span.End()
197190
defer func() { oc.SetSpanStatus(span, err) }()
@@ -207,7 +200,6 @@ func (s *service) Resume(ctx context.Context, req *task.ResumeRequest) (_ *googl
207200
}
208201

209202
func (s *service) Checkpoint(ctx context.Context, req *task.CheckpointTaskRequest) (_ *google_protobuf1.Empty, err error) {
210-
defer panicRecover()
211203
ctx, span := trace.StartSpan(ctx, "Checkpoint")
212204
defer span.End()
213205
defer func() { oc.SetSpanStatus(span, err) }()
@@ -225,7 +217,6 @@ func (s *service) Checkpoint(ctx context.Context, req *task.CheckpointTaskReques
225217
}
226218

227219
func (s *service) Kill(ctx context.Context, req *task.KillRequest) (_ *google_protobuf1.Empty, err error) {
228-
defer panicRecover()
229220
ctx, span := trace.StartSpan(ctx, "Kill")
230221
defer span.End()
231222
defer func() { oc.SetSpanStatus(span, err) }()
@@ -245,7 +236,6 @@ func (s *service) Kill(ctx context.Context, req *task.KillRequest) (_ *google_pr
245236
}
246237

247238
func (s *service) Exec(ctx context.Context, req *task.ExecProcessRequest) (_ *google_protobuf1.Empty, err error) {
248-
defer panicRecover()
249239
ctx, span := trace.StartSpan(ctx, "Exec")
250240
defer span.End()
251241
defer func() { oc.SetSpanStatus(span, err) }()
@@ -267,7 +257,6 @@ func (s *service) Exec(ctx context.Context, req *task.ExecProcessRequest) (_ *go
267257
}
268258

269259
func (s *service) DiagExecInHost(ctx context.Context, req *shimdiag.ExecProcessRequest) (_ *shimdiag.ExecProcessResponse, err error) {
270-
defer panicRecover()
271260
ctx, span := trace.StartSpan(ctx, "DiagExecInHost")
272261
defer span.End()
273262
defer func() { oc.SetSpanStatus(span, err) }()
@@ -289,7 +278,6 @@ func (s *service) DiagExecInHost(ctx context.Context, req *shimdiag.ExecProcessR
289278
}
290279

291280
func (s *service) DiagShare(ctx context.Context, req *shimdiag.ShareRequest) (_ *shimdiag.ShareResponse, err error) {
292-
defer panicRecover()
293281
ctx, span := trace.StartSpan(ctx, "DiagShare")
294282
defer span.End()
295283
defer func() { oc.SetSpanStatus(span, err) }()
@@ -308,7 +296,6 @@ func (s *service) DiagShare(ctx context.Context, req *shimdiag.ShareRequest) (_
308296
}
309297

310298
func (s *service) ResizePty(ctx context.Context, req *task.ResizePtyRequest) (_ *google_protobuf1.Empty, err error) {
311-
defer panicRecover()
312299
ctx, span := trace.StartSpan(ctx, "ResizePty")
313300
defer span.End()
314301
defer func() { oc.SetSpanStatus(span, err) }()
@@ -328,7 +315,6 @@ func (s *service) ResizePty(ctx context.Context, req *task.ResizePtyRequest) (_
328315
}
329316

330317
func (s *service) CloseIO(ctx context.Context, req *task.CloseIORequest) (_ *google_protobuf1.Empty, err error) {
331-
defer panicRecover()
332318
ctx, span := trace.StartSpan(ctx, "CloseIO")
333319
defer span.End()
334320
defer func() { oc.SetSpanStatus(span, err) }()
@@ -347,7 +333,6 @@ func (s *service) CloseIO(ctx context.Context, req *task.CloseIORequest) (_ *goo
347333
}
348334

349335
func (s *service) Update(ctx context.Context, req *task.UpdateTaskRequest) (_ *google_protobuf1.Empty, err error) {
350-
defer panicRecover()
351336
ctx, span := trace.StartSpan(ctx, "Update")
352337
defer span.End()
353338
defer func() { oc.SetSpanStatus(span, err) }()
@@ -363,7 +348,6 @@ func (s *service) Update(ctx context.Context, req *task.UpdateTaskRequest) (_ *g
363348
}
364349

365350
func (s *service) Wait(ctx context.Context, req *task.WaitRequest) (resp *task.WaitResponse, err error) {
366-
defer panicRecover()
367351
ctx, span := trace.StartSpan(ctx, "Wait")
368352
defer span.End()
369353
defer func() {
@@ -388,7 +372,6 @@ func (s *service) Wait(ctx context.Context, req *task.WaitRequest) (resp *task.W
388372
}
389373

390374
func (s *service) Stats(ctx context.Context, req *task.StatsRequest) (_ *task.StatsResponse, err error) {
391-
defer panicRecover()
392375
ctx, span := trace.StartSpan(ctx, "Stats")
393376
defer span.End()
394377
defer func() { oc.SetSpanStatus(span, err) }()
@@ -404,7 +387,6 @@ func (s *service) Stats(ctx context.Context, req *task.StatsRequest) (_ *task.St
404387
}
405388

406389
func (s *service) Connect(ctx context.Context, req *task.ConnectRequest) (resp *task.ConnectResponse, err error) {
407-
defer panicRecover()
408390
ctx, span := trace.StartSpan(ctx, "Connect")
409391
defer span.End()
410392
defer func() {
@@ -428,7 +410,6 @@ func (s *service) Connect(ctx context.Context, req *task.ConnectRequest) (resp *
428410
}
429411

430412
func (s *service) Shutdown(ctx context.Context, req *task.ShutdownRequest) (_ *google_protobuf1.Empty, err error) {
431-
defer panicRecover()
432413
ctx, span := trace.StartSpan(ctx, "Shutdown")
433414
defer span.End()
434415
defer func() { oc.SetSpanStatus(span, err) }()
@@ -447,7 +428,6 @@ func (s *service) DiagStacks(ctx context.Context, req *shimdiag.StacksRequest) (
447428
if s == nil {
448429
return nil, nil
449430
}
450-
defer panicRecover()
451431
ctx, span := trace.StartSpan(ctx, "DiagStacks")
452432
defer span.End()
453433

@@ -480,7 +460,6 @@ func (s *service) DiagPid(ctx context.Context, req *shimdiag.PidRequest) (*shimd
480460
if s == nil {
481461
return nil, nil
482462
}
483-
defer panicRecover()
484463
ctx, span := trace.StartSpan(ctx, "DiagPid")
485464
defer span.End()
486465

0 commit comments

Comments
 (0)