summaryrefslogtreecommitdiffhomepage
path: root/pkg/refsvfs2
diff options
context:
space:
mode:
authorgVisor bot <gvisor-bot@google.com>2020-11-03 03:20:07 +0000
committergVisor bot <gvisor-bot@google.com>2020-11-03 03:20:07 +0000
commitf75db1230a6cc509259917da3271ea84b4b1a3ec (patch)
tree76c318accb77bf54e4a43ba567340a37b0e34d9c /pkg/refsvfs2
parentae343e482721b72de8642d5242f24aa8b8cb835a (diff)
parent51b062f6cdfb59ef82d0a6fa2ca79cb00dd953d2 (diff)
Merge release-20201027.0-53-g51b062f6c (automated)
Diffstat (limited to 'pkg/refsvfs2')
-rw-r--r--pkg/refsvfs2/refs_map.go29
1 files changed, 20 insertions, 9 deletions
diff --git a/pkg/refsvfs2/refs_map.go b/pkg/refsvfs2/refs_map.go
index faf191f39..9fbc5466f 100644
--- a/pkg/refsvfs2/refs_map.go
+++ b/pkg/refsvfs2/refs_map.go
@@ -62,7 +62,9 @@ func Register(obj CheckedObject) {
}
liveObjects[obj] = struct{}{}
liveObjectsMu.Unlock()
- logEvent(obj, "registered")
+ if leakCheckEnabled() && obj.LogRefs() {
+ logEvent(obj, "registered")
+ }
}
}
@@ -75,31 +77,40 @@ func Unregister(obj CheckedObject) {
panic(fmt.Sprintf("Expected to find entry in leak checking map for reference %p", obj))
}
delete(liveObjects, obj)
- logEvent(obj, "unregistered")
+ if leakCheckEnabled() && obj.LogRefs() {
+ logEvent(obj, "unregistered")
+ }
}
}
// LogIncRef logs a reference increment.
func LogIncRef(obj CheckedObject, refs int64) {
- logEvent(obj, fmt.Sprintf("IncRef to %d", refs))
+ if leakCheckEnabled() && obj.LogRefs() {
+ logEvent(obj, fmt.Sprintf("IncRef to %d", refs))
+ }
}
// LogTryIncRef logs a successful TryIncRef call.
func LogTryIncRef(obj CheckedObject, refs int64) {
- logEvent(obj, fmt.Sprintf("TryIncRef to %d", refs))
+ if leakCheckEnabled() && obj.LogRefs() {
+ logEvent(obj, fmt.Sprintf("TryIncRef to %d", refs))
+ }
}
// LogDecRef logs a reference decrement.
func LogDecRef(obj CheckedObject, refs int64) {
- logEvent(obj, fmt.Sprintf("DecRef to %d", refs))
+ if leakCheckEnabled() && obj.LogRefs() {
+ logEvent(obj, fmt.Sprintf("DecRef to %d", refs))
+ }
}
// logEvent logs a message for the given reference-counted object.
+//
+// obj.LogRefs() should be checked before calling logEvent, in order to avoid
+// calling any text processing needed to evaluate msg.
func logEvent(obj CheckedObject, msg string) {
- if obj.LogRefs() {
- log.Infof("[%s %p] %s:", obj.RefType(), obj, msg)
- log.Infof(refs_vfs1.FormatStack(refs_vfs1.RecordStack()))
- }
+ log.Infof("[%s %p] %s:", obj.RefType(), obj, msg)
+ log.Infof(refs_vfs1.FormatStack(refs_vfs1.RecordStack()))
}
// DoLeakCheck iterates through the live object map and logs a message for each