Skip to content

signal泄露问题 #5051

@isluckys

Description

@isluckys

func (t *ActivityTimer) SetTimeout(timeout time.Duration) {

这里自上次修复以后出现了其他泄露情况

`

0x47af84 internal/sync.runtime_SemacquireMutex+0x24 C:/Program Files/Go/src/runtime/sema.go:95

0x49725c internal/sync.(*Mutex).lockSlow+0x15c C:/Program Files/Go/src/internal/sync/mutex.go:149

0x498db0 internal/sync.(*Mutex).Lock+0x30 C:/Program Files/Go/src/internal/sync/mutex.go:70

0x498d8e sync.(*Mutex).Lock+0xe C:/Program Files/Go/src/sync/mutex.go:46

0x498d92 sync.(*RWMutex).Lock+0x12 C:/Program Files/Go/src/sync/rwmutex.go:150

0x8b3e09 github.com/xtls/xray-core/common/signal.(*ActivityTimer).finish+0x29

0x8b4278 github.com/xtls/xray-core/common/signal.(*ActivityTimer).check+0x38

0x8b34a3 github.com/xtls/xray-core/common/task.(*Periodic).checkedExecute+0x43

0x8b37c8 github.com/xtls/xray-core/common/task.(*Periodic).Start+0xa8

0x8b403e github.com/xtls/xray-core/common/signal.(*ActivityTimer).SetTimeout+0xfe

0xc8c152 github.com/xtls/xray-core/proxy/freedom.(*Handler).Process.func4+0x1f2

0xc8bee1 github.com/xtls/xray-core/proxy/freedom.(*Handler).Process.OnSuccess.func7+0x21

0x8b3ceb github.com/xtls/xray-core/common/task.Run.func1+0x2b`

看起来像是在执行SetTimeout时Periodic那边执行了导致这个死锁。

我自己对SetTimeout这个单独加了一个锁解决了。但不像是能彻底解决问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions