[tor-dev] Latest state of the guard algorithm proposal (prop259) (April 2016)

George Kadianakis desnacked at riseup.net
Fri Apr 22 14:14:40 UTC 2016

Fan Jiang <fanjiang at thoughtworks.com> writes:

> [ text/plain ]
> 2016年4月22日 上午4:54,"George Kadianakis" <desnacked at riseup.net>写道:
>> Fan Jiang <fanjiang at thoughtworks.com> writes:
>> > [ text/plain ]
>> > On Thu, Apr 21, 2016 at 4:32 AM, George Kadianakis <desnacked at riseup.net
>> > wrote:
>> >
>> > <snip>
> It seems like we come to a point that most of prop259 can be stable for a
> while, we are going to do some cleanup in this implementation and spec. I
> think next week we can ask more people to review, does that sounds OK?

Sounds good!

> BTW, About your segmentfault I couldn't reproduce, maybe related with your
> torrc/state file?

I think it's some sort of dangling pointer error. e->chosen_by_version seems to
be referring to a corrupted memory address.

Not sure if it's caused by my state file, but in general the prop259 branch
should work well with any old state file without crashing.

Here is some gdb output from the segfault:

Apr 22 17:08:21.161 [notice] Tor v0.2.8.1-alpha-dev (git-d7ed996b2aba9f10) running on Linux with Libevent 2.0.21-stable, OpenSSL 1.0.1k and Zlib 1.2.8.
Apr 22 17:08:21.161 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
Apr 22 17:08:21.161 [notice] This version is not a stable Tor release. Expect more bugs than usual.
Apr 22 17:08:21.161 [notice] Read configuration file "/home/f/Computers/tor/mytor/../confs/prop259".
Apr 22 17:08:21.164 [notice] Opening Socks listener on

Program received signal SIGSEGV, Segmentation fault.
__strchr_sse2 () at ../sysdeps/x86_64/multiarch/../strchr.S:32
32	../sysdeps/x86_64/multiarch/../strchr.S: No such file or directory.
(gdb) up
#1  0x000055555567eb25 in guards_update_state (next=0x5555559c3f40, next at entry=0x5555559c35e8, guards=guards at entry=0x5555559c4620, 
    config_name=config_name at entry=0x55555570c3be "UsedGuard") at src/or/prop259.c:1155
1155	            !strchr(e->chosen_by_version, ' ')) {
(gdb) p/x e
$1 = 0x5555559c42d0
(gdb) p/x e->chosen_by_version
$2 = 0x4137323000000000
(gdb) x/s chosen_by_version
No symbol "chosen_by_version" in current context.
(gdb) x/s e->chosen_by_version
0x4137323000000000:	<error: Cannot access memory at address 0x4137323000000000>

and here is my state file in case it matters:

EntryGuard jaures4 5CF8AFA5E4B0BB88942A44A3F3AAE08C3BDFD60B DirCache
EntryGuardAddedBy 5CF8AFA5E4B0BB88942A44A3F3AAE08C3BDFD60B 2016-01-11 02:54:36
EntryGuard SGGSUK4 38F423A4320380FFE32DB60B72E7457CD6E3F096 DirCache
EntryGuardAddedBy 38F423A4320380FFE32DB60B72E7457CD6E3F096 2016-01-25 08:20:31
EntryGuard aTomicRelayFR1 25EF027A85BAA044048AD1D635AF8583DB88C08F DirCache
EntryGuardAddedBy 25EF027A85BAA044048AD1D635AF8583DB88C08F 2016-02-06 01:04:20
TorVersion Tor (git-3731dd5c3071dcba)
LastWritten 2016-02-07 18:18:11

More information about the tor-dev mailing list