celzero / gotrie

A golang reader for a in-house, modified stevehanov's succinct trie implementation (http://stevehanov.ca/blog/?id=120) serialized to uint16 instead of base64.
https://bravedns.com/configure
Mozilla Public License 2.0
3 stars 3 forks source link

Get rid of globals #1

Closed ignoramous closed 2 years ago

ignoramous commented 3 years ago

We've seen at least once concurrent access exceptions.

Ex A:

03-04 02:03:34.742 29143  6825 I GoLog   : file read successful : /data/data/com.celzero.bravedns/files/1607700204580/td.txt
03-04 02:03:34.743 29143  6825 I GoLog   : file byte length :  43826870
03-04 02:03:34.744 29143 29419 I GoLog   : file read successful : /data/data/com.celzero.bravedns/files/1607700204580/td.txt
03-04 02:03:34.744 29143 29419 I GoLog   : file byte length :  43826870
03-04 02:03:35.092 29143 29419 D RethinkDNS: RethinkVPNService : isScreenLockEnabled: false
03-04 02:03:35.093 29143 29419 D RethinkDNS: RethinkVPNService Response for the block: 74.125.24.95  %After% 10113, false,10.111.222.1, 48550, 74.125.24.95, 443
03-04 02:03:35.093 29143 32254 D RethinkDNS: IPTracker - Package for uid : 10113, 1
03-04 02:03:35.336 29143 29419 I GoLog   : file read successful : /data/data/com.celzero.bravedns/files/1607700204580/rd.txt
03-04 02:03:35.336 29143 29419 I GoLog   : file byte length :  2967446
03-04 02:03:35.336 29143 29419 I GoLog   : file read successful : /data/data/com.celzero.bravedns/files/1607700204580/rd.txt
03-04 02:03:35.336 29143 29419 I GoLog   : file byte length :  2967446
03-04 02:03:35.354 29143 29230 I GoLog   : new proxy connection for target: tcp:74.125.24.95:443
03-04 02:03:35.377 29143 29230 I GoLog   : TD_buf Length : 21913435
03-04 02:03:35.377 29143 29230 I GoLog   : RD_buf Length : 1483723
03-04 02:03:35.377 29143 29230 I GoLog   : TD_buf Length : 21913435
03-04 02:03:35.377 29143 29230 I GoLog   : RD_buf Length : 1483723
03-04 02:03:35.377 29143     0 E Go      : fatal error: concurrent map writes
03-04 02:03:35.377 29143 29230 E GoLog   : fatal error: concurrent map writes
03-04 02:03:35.379 29143     0 E Go      : 
03-04 02:03:35.379 29143     0 E Go      : goroutine 17 [running, locked to thread]:
03-04 02:03:35.381 29143     0 E Go      : runtime.throw(0x73dd2ba58d, 0x15)
03-04 02:03:35.381 29143     0 E Go      :      /home/jitpack/build/golang/go/src/runtime/panic.go:1116 +0x4c fp=0x4000257e60 sp=0x4000257e30 pc=0x73dcff3f2c
03-04 02:03:35.382 29143     0 E Go      : runtime.mapassign_fast64(0x73dd363e80, 0x40003c6300, 0x10, 0x0)
03-04 02:03:35.382 29143     0 E Go      :      /home/jitpack/build/golang/go/src/runtime/map_fast64.go:101 +0x304 fp=0x4000257ea0 sp=0x4000257e60 pc=0x73dcfd4bc4
03-04 02:03:35.382 29143     0 E Go      : github.com/celzero/gotrie/trie.(*BS).Init(0x73dd5f2520, 0x4001056000, 0x16a3cb, 0x16a3cb, 0x18, 0x0)
03-04 02:03:35.382 29143     0 E Go      :      /tmp/gomobile-work-713396512/pkg/mod/github.com/celzero/gotrie@v0.0.0-20201019185855-82d11a96233f/trie/bitstring.go:19 +0xec fp=0x4000257f00 sp=0x4000257ea0 pc=0x73dd2108ac
03-04 02:03:35.382 29143     0 E Go      : github.com/celzero/gotrie/trie.(*RankDirectory).Init(0x73dd5f2520, 0x4001056000, 0x16a3cb, 0x16a3cb, 0x400af08000, 0x14e5f5b, 0x14e5f5b, 0x37ba8f1, 0x400, 0x20, ...)
03-04 02:03:35.382 29143     0 E Go      :      /tmp/gomobile-work-713396512/pkg/mod/github.com/celzero/gotrie@v0.0.0-20201019185855-82d11a96233f/trie/rankdirectory.go:20 +0x64 fp=0x4000257f50 sp=0x4000257f00 pc=0x73dd219154
03-04 02:03:35.382 29143     0 E Go      : github.com/celzero/gotrie/trie.Build(0x4000286000, 0x3a, 0x4000286040, 0x3a, 0x400030c0f0, 0x44, 0x4000286080, 0x40, 0x0, 0x0, ...)
03-04 02:03:35.382 29143     0 E Go      :      /tmp/gomobile-work-713396512/pkg/mod/github.com/celzero/gotrie@v0.0.0-20201019185855-82d11a96233f/trie/build.go:48 +0x518 fp=0x40002598d0 sp=0x4000257f50 pc=0x73dd212cf8
03-04 02:03:35.382 29143     0 E Go      : github.com/Jigsaw-Code/outline-go-tun2socks/intra/dnsx.NewBraveDNSLocal(0x4000286000, 0x3a, 0x4000286040, 0x3a, 0x400030c0f0, 0x44, 0x4000286080, 0x40, 0x4000224138, 0x73dd26c4a4, ...)
03-04 02:03:35.382 29143     0 E Go      :      /home/jitpack/build/intra/dnsx/bravedns.go:229 +0x130 fp=0x400025dcd0 sp=0x40002598d0 pc=0x73dd21a960
03-04 02:03:35.382 29143     0 E Go      : main.proxydnsx__NewBraveDNSLocal(0x73e3df0700, 0x3a, 0x73e3f0a400, 0x3a, 0x744e210e40, 0x44, 0x73e3df0000, 0x40, 0x400008e058)
03-04 02:03:35.382 29143     0 E Go      :      /tmp/gomobile-work-713396512/src/gobind/go_dnsxmain.go:216 +0xd8 fp=0x400025dd90 sp=0x400025dcd0 pc=0x73dd27e058
03-04 02:03:35.382 29143     0 E Go      : main._cgoexpwrap_31d7a0a27f33_proxydnsx__NewBraveDNSLocal(0x73e3df0700, 0x3a, 0x73e3f0a400, 0x3a, 0x744e210e40, 0x44, 0x73e3df0000, 0x40, 0x73e3df0000)
03-04 02:03:35.382 29143     0 E Go      :      _cgo_gotypes.go:2112 +0x58 fp=0x400025ddf0 sp=0x400025dd90 pc=0x73dd276558
03-04 02:03:35.382 29143     0 E Go      : runtime.call128(0x0, 0x73f9373608, 0x73f9373708)
03-04 02:03:35.382 29143     0 E Go      :      /home/jitpack/build/golang/go/src/runtime/asm_arm64.s:421 +0x6c fp=0x400025de90 sp=0x400025ddf0 pc=0x73dd0216cc
03-04 02:03:35.382 29143     0 E Go      : runtime.cgocallbackg1(0x0)
03-04 02:03:35.382 29143     0 E Go      :      /home/jitpack/build/golang/go/src/runtime/cgocall.go:332 +0x12c fp=0x400025df40 sp=0x400025de90 pc=0x73dcfc7f5c
03-04 02:03:35.382 29143     0 E Go      : runtime.cgocallbackg(0x0)
03-04 02:03:35.382 29143     0 E Go      :      /home/jitpack/build/golang/go/src/runtime/cgocall.go:207 +0x88 fp=0x400025dfb0 sp=0x400025df40 pc=0x73dcfc7db8
03-04 02:03:35.382 29143     0 E Go      : runtime.cgocallback_gofunc(0x0, 0x0, 0x0, 0x4000183500)
03-04 02:03:35.382 29143     0 E Go      :      /home/jitpack/build/golang/go/src/runtime/asm_arm64.s:1061 +0x94 fp=0x400025dfe0 sp=0x400025dfb0 pc=0x73dd023354
03-04 02:03:35.382 29143     0 E Go      : runtime.goexit()
03-04 02:03:35.382 29143     0 E Go      :      /home/jitpack/build/golang/go/src/runtime/asm_arm64.s:1136 +0x4 fp=0x400025dfe0 sp=0x400025dfe0 pc=0x73dd023424
03-04 02:03:35.382 29143     0 E Go      : 
santhosh-ponnusamy commented 2 years ago

Global variable issue fixed at https://github.com/celzero/gotrie/commit/d9d0dcea9cbdb7738628cea0668c5fb99b959a9d