OS:macOS 10.14.5
Broswer: FireFox 68.0
xary version: 0.5.1
使用被动扫描模式:./xray webscan --listen 127.0.0.1:8888 时报错后闪退
好像是并发较高导致的,Error log如下:
fatal error: concurrent map iteration and map write
goroutine 12128 [running]:
runtime.throw(0x187c820, 0x26)
/usr/local/go/src/runtime/panic.go:617 +0x72 fp=0xc001619d18 sp=0xc001619ce8 pc=0x102cdd2
runtime.mapiternext(0xc001619e40)
/usr/local/go/src/runtime/map.go:860 +0x597 fp=0xc001619da0 sp=0xc001619d18 pc=0x100eb77
assassin/http.(*Request).clone(0xc000e55ec0, 0xc0015e0901, 0xc001e49f40)
/builds/lohengrin/assassin/http/request.go:446 +0x3be fp=0xc001619f10 sp=0xc001619da0 pc=0x15c421e
assassin/http.(*Flow).DeepClone(0xc000fa3530, 0xc001b04450, 0x29e8d60800)
/builds/lohengrin/assassin/http/resource.go:35 +0x33 fp=0xc001619f38 sp=0xc001619f10 pc=0x15c8843
assassin/controller.(*unit).run.func1(0xc001c3b590, 0x1982940, 0xc000ec67c0, 0x1982840, 0xc000fa3530)
/builds/lohengrin/assassin/controller/controller.go:39 +0xcd fp=0xc001619fb8 sp=0xc001619f38 pc=0x161a9ed
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1337 +0x1 fp=0xc001619fc0 sp=0xc001619fb8 pc=0x105be61
created by assassin/controller.(*unit).run
/builds/lohengrin/assassin/controller/controller.go:35 +0x138
goroutine 1 [select]:
assassin/utils.(*SizedWaitGroup).AddWithContext(0xc001c3b430, 0x1982940, 0xc000ec67c0, 0xc002379901, 0x1617e21)
/builds/lohengrin/assassin/utils/sync.go:34 +0xc5
assassin/controller.(*unit).run(0xc001c3b400, 0x1982940, 0xc000ec67c0, 0x1982840, 0xc000fa2180, 0x0, 0x0)
/builds/lohengrin/assassin/controller/controller.go:30 +0xc2
assassin/controller.(*SingleProcessController).Start(0xc002379c80, 0x1982940, 0xc000ec67c0, 0x10, 0x0)
/builds/lohengrin/assassin/controller/single.go:129 +0x1ef
assassin/cli.glob..func3(0xc000888120, 0x0, 0x0)
/builds/lohengrin/assassin/cli/webscan.go:177 +0x94e
gopkg.in/urfave/cli%2ev2.(*Command).Run(0xc001213560, 0xc001233710, 0x0, 0x0)
/go/pkg/mod/gopkg.in/urfave/[email protected]/command.go:167 +0x6c5
gopkg.in/urfave/cli%2ev2.(*App).Run(0xc00126c000, 0xc0000ae000, 0x4, 0x4, 0x0, 0x0)
/go/pkg/mod/gopkg.in/urfave/[email protected]/app.go:261 +0x661
main.main()
/builds/lohengrin/assassin/main.go:132 +0x21f
goroutine 18 [chan receive]:
github.com/panjf2000/ants.(*Pool).periodicallyPurge(0xc0001e0150)
/go/pkg/mod/github.com/panjf2000/[email protected]/pool.go:71 +0x212
created by github.com/panjf2000/ants.NewTimingPool
/go/pkg/mod/github.com/panjf2000/[email protected]/pool.go:116 +0xc5
goroutine 49 [syscall, 2 minutes]:
os/signal.signal_recv(0x0)
/usr/local/go/src/runtime/sigqueue.go:139 +0x9f
os/signal.loop()
/usr/local/go/src/os/signal/signal_unix.go:23 +0x22
created by os/signal.init.0
/usr/local/go/src/os/signal/signal_unix.go:29 +0x41
goroutine 81 [chan receive, 2 minutes]:
assassin/cli/ctx.WithSignal.func1(0xc0013363f0, 0xc001804120)
/builds/lohengrin/assassin/cli/ctx/ctx.go:44 +0xee
created by assassin/cli/ctx.WithSignal
/builds/lohengrin/assassin/cli/ctx/ctx.go:39 +0x1b0
goroutine 10 [select]:
assassin/collector.(*mitmProxy).FitOut.func1(0x1982940, 0xc000ec67c0, 0xc0018ea4e0)
/builds/lohengrin/assassin/collector/mitm.go:126 +0xe3
created by assassin/collector.(*mitmProxy).FitOut
/builds/lohengrin/assassin/collector/mitm.go:122 +0x8f
goroutine 83 [IO wait, 2 minutes]:
internal/poll.runtime_pollWait(0x277aba0, 0x72, 0x0)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc00109c118, 0x72, 0x0, 0x0, 0x1862f2d)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Accept(0xc00109c100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:384 +0x1ba
net.(*netFD).accept(0xc00109c100, 0x17ec1c0, 0x50, 0xc000f22000)
/usr/local/go/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc0001ee030, 0xc001358000, 0x224a6d0, 0x0)
/usr/local/go/src/net/tcpsock_posix.go:139 +0x32
net.(*TCPListener).AcceptTCP(0xc0001ee030, 0x100c0a8, 0x30, 0x17ec1c0)
/usr/local/go/src/net/tcpsock.go:247 +0x48
net/http.tcpKeepAliveListener.Accept(0xc0001ee030, 0x17ec1c0, 0xc000888330, 0x1764be0, 0x20231d0)
/usr/local/go/src/net/http/server.go:3264 +0x2f
net/http.(*Server).Serve(0xc00009a410, 0x1981380, 0xc0001ee030, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:2859 +0x22d
net/http.(*Server).ListenAndServe(0xc00009a410, 0x187120d, 0x17)
/usr/local/go/src/net/http/server.go:2797 +0xe4
assassin/reverse.(*Server).Start.func1(0xc001329f40)
/builds/lohengrin/assassin/reverse/server.go:152 +0x69
created by assassin/reverse.(*Server).Start
/builds/lohengrin/assassin/reverse/server.go:150 +0x4d
goroutine 84 [chan receive, 2 minutes]:
assassin/reverse.(*Server).Start.func2(0x1982940, 0xc000ec67c0, 0xc001329f40)
/builds/lohengrin/assassin/reverse/server.go:160 +0x48
created by assassin/reverse.(*Server).Start
/builds/lohengrin/assassin/reverse/server.go:159 +0x83
goroutine 41 [chan receive]:
github.com/panjf2000/ants.(*Pool).periodicallyPurge(0xc0012640e0)
/go/pkg/mod/github.com/panjf2000/[email protected]/pool.go:71 +0x212
created by github.com/panjf2000/ants.NewTimingPool
/go/pkg/mod/github.com/panjf2000/[email protected]/pool.go:116 +0xc5
goroutine 42 [IO wait]:
internal/poll.runtime_pollWait(0x277ac70, 0x72, 0x0)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc000ef2098, 0x72, 0x0, 0x0, 0x1862f2d)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Accept(0xc000ef2080, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:384 +0x1ba
net.(*netFD).accept(0xc000ef2080, 0xc00138ad70, 0xc09bc6b8a0, 0x2053820)
/usr/local/go/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc000eda038, 0x1ab79bc6b8a0, 0x100000001, 0xc00138adb0)
/usr/local/go/src/net/tcpsock_posix.go:139 +0x32
net.(*TCPListener).AcceptTCP(0xc000eda038, 0xc00138add8, 0x10b4ea6, 0x5d232056)
/usr/local/go/src/net/tcpsock.go:247 +0x48
net/http.tcpKeepAliveListener.Accept(0xc000eda038, 0xc00138ae28, 0x18, 0xc0013f2600, 0x136f734)
/usr/local/go/src/net/http/server.go:3264 +0x2f
net/http.(*Server).Serve(0xc00009a9c0, 0x1981380, 0xc000eda038, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:2859 +0x22d
net/http.(*Server).ListenAndServe(0xc00009a9c0, 0x1873222, 0x1a)
/usr/local/go/src/net/http/server.go:2797 +0xe4
assassin/collector.(*mitmProxy).FitOut.func3(0xc001254ab0, 0xc00009a9c0, 0xc001367560, 0xc0018ea4e0)
/builds/lohengrin/assassin/collector/mitm.go:235 +0xac
created by assassin/collector.(*mitmProxy).FitOut
/builds/lohengrin/assassin/collector/mitm.go:233 +0xebb
goroutine 43 [chan receive, 2 minutes]:
assassin/collector.(*mitmProxy).FitOut.func4(0x1982940, 0xc000ec67c0, 0xc00009a9c0, 0xc0012640e0, 0xc001367560, 0xc0018ea4e0)
/builds/lohengrin/assassin/collector/mitm.go:243 +0x4c
created by assassin/collector.(*mitmProxy).FitOut
/builds/lohengrin/assassin/collector/mitm.go:242 +0xf21
goroutine 9820 [IO wait]:
internal/poll.runtime_pollWait(0x51400d8, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc002286398, 0x72, 0x1600, 0x16a3, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc002286380, 0xc001606000, 0x16a3, 0x16a3, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1f2
net.(*netFD).Read(0xc002286380, 0xc001606000, 0x16a3, 0x16a3, 0x203000, 0x0, 0x1696)
/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc00000e080, 0xc001606000, 0x16a3, 0x16a3, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:177 +0x69
crypto/tls.(*atLeastReader).Read(0xc0021509a0, 0xc001606000, 0x16a3, 0x16a3, 0x100b819, 0xc0019caf30, 0xc001c628f0)
/usr/local/go/src/crypto/tls/conn.go:761 +0x60
bytes.(*Buffer).ReadFrom(0xc0016b13d8, 0x1970f20, 0xc0021509a0, 0x1009875, 0x177de40, 0x182c920)
/usr/local/go/src/bytes/buffer.go:207 +0xbd
crypto/tls.(*Conn).readFromUntil(0xc0016b1180, 0x1972200, 0xc00000e080, 0x5, 0xc00000e080, 0xc001c62a10)
/usr/local/go/src/crypto/tls/conn.go:783 +0xf8
crypto/tls.(*Conn).readRecordOrCCS(0xc0016b1180, 0x189a300, 0xc0016b12b8, 0xc000e9d440)
/usr/local/go/src/crypto/tls/conn.go:590 +0x125
crypto/tls.(*Conn).readRecord(...)
/usr/local/go/src/crypto/tls/conn.go:558
crypto/tls.(*Conn).Read(0xc0016b1180, 0xc0015d2000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/crypto/tls/conn.go:1236 +0x137
net/http.(*persistConn).Read(0xc000eee5a0, 0xc0015d2000, 0x1000, 0x1000, 0xc001c62c88, 0x1004ae5, 0xc00202ba40)
/usr/local/go/src/net/http/transport.go:1524 +0x7b
bufio.(*Reader).fill(0xc001841a40)
/usr/local/go/src/bufio/bufio.go:100 +0x10f
bufio.(*Reader).Peek(0xc001841a40, 0x1, 0x0, 0x0, 0x1, 0xc001920d00, 0x0)
/usr/local/go/src/bufio/bufio.go:138 +0x4f
net/http.(*persistConn).readLoop(0xc000eee5a0)
/usr/local/go/src/net/http/transport.go:1677 +0x1a3
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1357 +0xae8
goroutine 12127 [runnable]:
assassin/http.CloneHeader(0xc001136ea0, 0xc0011f5680)
/builds/lohengrin/assassin/http/utils.go:47 +0xb1
assassin/http.(*Request).clone(0xc000e55ec0, 0x0, 0x0)
/builds/lohengrin/assassin/http/request.go:432 +0xf3
assassin/http.(*Request).Mutate(0xc000e55ec0, 0xc000ee6bd0, 0x0)
/builds/lohengrin/assassin/http/request.go:578 +0x54
assassin/plugins/crlf_injection.(*CRLFInjection).HandleFlow(0x2052100, 0x19829c0, 0xc002354000, 0x1982840, 0xc000fa3530, 0xc002354001, 0xc000e55ec0)
/builds/lohengrin/assassin/plugins/crlf_injection/crlf_injection.go:99 +0x3bb
assassin/controller.(*unit).run.func1(0xc001c3b400, 0x1982940, 0xc000ec67c0, 0x1982840, 0xc000fa3530)
/builds/lohengrin/assassin/controller/controller.go:39 +0x105
created by assassin/controller.(*unit).run
/builds/lohengrin/assassin/controller/controller.go:35 +0x138
goroutine 2726 [IO wait]:
internal/poll.runtime_pollWait(0x277a380, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc001b80f18, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc001b80f00, 0xc001067000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1f2
net.(*netFD).Read(0xc001b80f00, 0xc001067000, 0x1000, 0x1000, 0xc000042500, 0xc000fabc40, 0x1364e9a)
/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc000f863a0, 0xc001067000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:177 +0x69
net/http.(*connReader).Read(0xc001bfb320, 0xc001067000, 0x1000, 0x1000, 0x27b54015a2, 0x2052280, 0x72)
/usr/local/go/src/net/http/server.go:787 +0x107
bufio.(*Reader).fill(0xc001f89a40)
/usr/local/go/src/bufio/bufio.go:100 +0x10f
bufio.(*Reader).Peek(0xc001f89a40, 0x4, 0x27b54015a2, 0x2052280, 0x0, 0x0, 0x2052280)
/usr/local/go/src/bufio/bufio.go:138 +0x4f
net/http.(*conn).serve(0xc0020a9040, 0x1982940, 0xc00195a480)
/usr/local/go/src/net/http/server.go:1903 +0x9bf
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2884 +0x2f4
goroutine 11734 [IO wait]:
internal/poll.runtime_pollWait(0x5140278, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc002402818, 0x72, 0x1600, 0x165b, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc002402800, 0xc0014e0000, 0x165b, 0x165b, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1f2
net.(*netFD).Read(0xc002402800, 0xc0014e0000, 0x165b, 0x165b, 0x203000, 0x0, 0x164e)
/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc001df63d8, 0xc0014e0000, 0x165b, 0x165b, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:177 +0x69
crypto/tls.(*atLeastReader).Read(0xc001f34260, 0xc0014e0000, 0x165b, 0x165b, 0x100b819, 0xc0019cb920, 0xc00138b8f0)
/usr/local/go/src/crypto/tls/conn.go:761 +0x60
bytes.(*Buffer).ReadFrom(0xc001f91758, 0x1970f20, 0xc001f34260, 0x1009875, 0x177de40, 0x182c920)
/usr/local/go/src/bytes/buffer.go:207 +0xbd
crypto/tls.(*Conn).readFromUntil(0xc001f91500, 0x1972200, 0xc001df63d8, 0x5, 0xc001df63d8, 0xc00138ba10)
/usr/local/go/src/crypto/tls/conn.go:783 +0xf8
crypto/tls.(*Conn).readRecordOrCCS(0xc001f91500, 0x189a300, 0xc001f91638, 0xc000e9d440)
/usr/local/go/src/crypto/tls/conn.go:590 +0x125
crypto/tls.(*Conn).readRecord(...)
/usr/local/go/src/crypto/tls/conn.go:558
crypto/tls.(*Conn).Read(0xc001f91500, 0xc0019ed000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/crypto/tls/conn.go:1236 +0x137
net/http.(*persistConn).Read(0xc001afa5a0, 0xc0019ed000, 0x1000, 0x1000, 0xc00138bc88, 0x1004ae5, 0xc001e44cc0)
/usr/local/go/src/net/http/transport.go:1524 +0x7b
bufio.(*Reader).fill(0xc001a81d40)
/usr/local/go/src/bufio/bufio.go:100 +0x10f
bufio.(*Reader).Peek(0xc001a81d40, 0x1, 0x0, 0x0, 0x1, 0xc001bfc300, 0x0)
/usr/local/go/src/bufio/bufio.go:138 +0x4f
net/http.(*persistConn).readLoop(0xc001afa5a0)
/usr/local/go/src/net/http/transport.go:1677 +0x1a3
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1357 +0xae8
goroutine 11731 [select]:
net/http.(*persistConn).writeLoop(0xc001b785a0)
/usr/local/go/src/net/http/transport.go:1976 +0x113
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1358 +0xb0d
goroutine 11730 [IO wait]:
internal/poll.runtime_pollWait(0x5140c38, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc00204a418, 0x72, 0x1600, 0x165b, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc00204a400, 0xc001607800, 0x165b, 0x165b, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1f2
net.(*netFD).Read(0xc00204a400, 0xc001607800, 0x165b, 0x165b, 0x203000, 0x0, 0x164e)
/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc0000a8018, 0xc001607800, 0x165b, 0x165b, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:177 +0x69
crypto/tls.(*atLeastReader).Read(0xc002150b40, 0xc001607800, 0x165b, 0x165b, 0x100b819, 0xc0019cbaa0, 0xc0017c78f0)
/usr/local/go/src/crypto/tls/conn.go:761 +0x60
bytes.(*Buffer).ReadFrom(0xc001f91058, 0x1970f20, 0xc002150b40, 0x1009875, 0x177de40, 0x182c920)
/usr/local/go/src/bytes/buffer.go:207 +0xbd
crypto/tls.(*Conn).readFromUntil(0xc001f90e00, 0x1972200, 0xc0000a8018, 0x5, 0xc0000a8018, 0xc0017c7a10)
/usr/local/go/src/crypto/tls/conn.go:783 +0xf8
crypto/tls.(*Conn).readRecordOrCCS(0xc001f90e00, 0x189a300, 0xc001f90f38, 0xc000e9d440)
/usr/local/go/src/crypto/tls/conn.go:590 +0x125
crypto/tls.(*Conn).readRecord(...)
/usr/local/go/src/crypto/tls/conn.go:558
crypto/tls.(*Conn).Read(0xc001f90e00, 0xc001775000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/crypto/tls/conn.go:1236 +0x137
net/http.(*persistConn).Read(0xc001b785a0, 0xc001775000, 0x1000, 0x1000, 0xc0017c7c88, 0x1004ae5, 0xc001e44960)
/usr/local/go/src/net/http/transport.go:1524 +0x7b
bufio.(*Reader).fill(0xc001a81620)
/usr/local/go/src/bufio/bufio.go:100 +0x10f
bufio.(*Reader).Peek(0xc001a81620, 0x1, 0x0, 0x0, 0x1, 0xc0018bfe00, 0x0)
/usr/local/go/src/bufio/bufio.go:138 +0x4f
net/http.(*persistConn).readLoop(0xc001b785a0)
/usr/local/go/src/net/http/transport.go:1677 +0x1a3
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1357 +0xae8
goroutine 12126 [runnable]:
sort.Slice(0x1719c40, 0xc002150c20, 0xc0011db5d0)
/usr/local/go/src/sort/slice.go:17 +0x176
net/http/cookiejar.(*Jar).cookies(0xc000093bc0, 0xc00201a680, 0xbf40e5f6cb1ac600, 0x22b9806779, 0x2052280, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/cookiejar/jar.go:209 +0x785
net/http/cookiejar.(*Jar).Cookies(0xc000093bc0, 0xc00201a680, 0x1043602, 0xc0000a81b8, 0x0)
/usr/local/go/src/net/http/cookiejar/jar.go:155 +0x57
net/http.(*Client).send(0xc000093b60, 0xc001e18400, 0x0, 0x0, 0x0, 0xc0000a81b8, 0x0, 0x1, 0x158b62f)
/usr/local/go/src/net/http/client.go:170 +0x51
net/http.(*Client).do(0xc000093b60, 0xc001e18400, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/client.go:641 +0x279
net/http.(*Client).Do(...)
/usr/local/go/src/net/http/client.go:509
assassin/http.(*Client).doWithRetries(0xc001832480, 0xc001e18400, 0x1, 0xc0011dbc00, 0x2, 0x2, 0x0)
/builds/lohengrin/assassin/http/client.go:142 +0x56b
assassin/http.(*Client).respond(0xc001832480, 0x19829c0, 0xc00215a060, 0xc001b0a840, 0x1, 0x0, 0x8, 0x8)
/builds/lohengrin/assassin/http/client.go:194 +0x28b
assassin/http.(*Client).Respond(...)
/builds/lohengrin/assassin/http/client.go:211
assassin/plugins/dirscan.(*Dirscan).request404(0x2052340, 0x19829c0, 0xc00215a060, 0xc001b0a780, 0xa, 0xc001b0a780, 0x0)
/builds/lohengrin/assassin/plugins/dirscan/dirscan.go:110 +0x12f
assassin/plugins/dirscan.(*Dirscan).HandleFlow(0x2052340, 0x19829c0, 0xc00215a060, 0x1982840, 0xc000fa3530, 0xc00215a001, 0xc001b0a6c0)
/builds/lohengrin/assassin/plugins/dirscan/dirscan.go:206 +0x12e
assassin/controller.(*unit).run.func1(0xc000ff3040, 0x1982940, 0xc000ec67c0, 0x1982840, 0xc000fa3530)
/builds/lohengrin/assassin/controller/controller.go:39 +0x105
created by assassin/controller.(*unit).run
/builds/lohengrin/assassin/controller/controller.go:35 +0x138
goroutine 2727 [IO wait]:
internal/poll.runtime_pollWait(0x5105ea0, 0x72, 0xffffffffffffffff)
/usr/local/go/src/runtime/netpoll.go:182 +0x56
internal/poll.(*pollDesc).wait(0xc002286818, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x9b
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc002286800, 0xc001194000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/internal/poll/fd_unix.go:169 +0x1f2
net.(*netFD).Read(0xc002286800, 0xc001194000, 0x1000, 0x1000, 0xc001a50c40, 0x137e8b6, 0xc000e9d440)
/usr/local/go/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc0001ee230, 0xc001194000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/go/src/net/net.go:177 +0x69
net/http.(*persistConn).Read(0xc001010360, 0xc001194000, 0x1000, 0x1000, 0xc001a50c88, 0x1004ae5, 0xc001ae8c60)
/usr/local/go/src/net/http/transport.go:1524 +0x7b
bufio.(*Reader).fill(0xc000f85800)
/usr/local/go/src/bufio/bufio.go:100 +0x10f
bufio.(*Reader).Peek(0xc000f85800, 0x1, 0x0, 0x0, 0x1, 0xc000090400, 0x0)
/usr/local/go/src/bufio/bufio.go:138 +0x4f
net/http.(*persistConn).readLoop(0xc001010360)
/usr/local/go/src/net/http/transport.go:1677 +0x1a3
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1357 +0xae8
goroutine 9821 [select]:
net/http.(*persistConn).writeLoop(0xc000eee5a0)
/usr/local/go/src/net/http/transport.go:1976 +0x113
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1358 +0xb0d
goroutine 2728 [select]:
net/http.(*persistConn).writeLoop(0xc001010360)
/usr/local/go/src/net/http/transport.go:1976 +0x113
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1358 +0xb0d
goroutine 11735 [select]:
net/http.(*persistConn).writeLoop(0xc001afa5a0)
/usr/local/go/src/net/http/transport.go:1976 +0x113
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1358 +0xb0d