Opened 7 years ago

Closed 7 years ago

#6726 closed defect (fixed)

Obfsproxy TBBs don't work on Mac OS X 10.7.4 and 10.8.1

Reported by: karsten Owned by: erinn
Priority: High Milestone:
Component: Applications/Tor bundles/installation Version: Vidalia: 0.2.20
Severity: Keywords:
Cc: erinn, Sebastian, asn Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

The "OSX (10.6 & 10.7) 64-bit Obfsproxy Tor Browser Bundle" from https://www.torproject.org/projects/obfsproxy.html.en breaks on OSX 10.7.4 and 10.8.1.

Aug 29 08:55:39.582 [Warning] Our communication channel with the
  managed proxy 'obfsproxy' closed. Most probably application stopped
  running.
[...]
Aug 29 08:55:40.585 [Warning] We were supposed to connect to bridge
  '(scrubbed)' using pluggable transport 'obfs2', but we can't find a
  pluggable transport proxy supporting 'obfs2'. This can happen if
  you haven't provided a ClientTransportPlugin line, or if your
  pluggable transport proxy stopped running.

Child Tickets

Change History (8)

comment:1 Changed 7 years ago by erinn

Does the 32-bit one work?

comment:2 Changed 7 years ago by karsten

No, same problem (tested on 10.8.1 only). Does it work for you? Any way how I can give you more useful debugging information?

comment:3 Changed 7 years ago by Sebastian

Dyld Error Message:

Library not loaded: /builds/*/libssl.1.0.0.dylib
Referenced from: /Users/USER/Downloads/TorBrowser_en-US.app/Contents/MacOS/obfsproxy
Reason: image not found

Looks like the obfsproxy binary gets built wrong

comment:4 Changed 7 years ago by Sebastian

Ok, that's not really surprising: we statically link openssl into libevent and tor, but not obfsproxy, so we don't even ship shared versions of the library. We should either do that and change Tor and Libevent to use them as well as obfsproxy, or link it statically here, too.

comment:5 Changed 7 years ago by erinn

I'd prefer to statically link it unless it becomes easy to figure out the dynamic linking on OS X. I played around with changing the paths listed in otool -L obfsproxy (with install_name_tool -change /path/to/dylib /new/path/to/dylib but because of obfsproxy's location and the location of the libraries I did not get it to work unless I put obfsproxy where the Vidalia executable is. For reference, the command to change it to the actual location of the libs would be, e.g,:

install_name_tool -change /builds/torbrowser_alpha_64/build-scripts/build/x86_64/built/lib/libcrypto.1.0.0.dylib 
Vidalia.app/Contents/Frameworks/libcrypto.1.0.0.dylib

But that doesn't work because libssl references libcrypto, which itself has this path: @executable_path/../Frameworks/libssl.1.0.0.dylib

so I THINK, based on what I've read, that they need to be the same. But Tor/Vidalia don't want obfsproxy in that directory and I didn't see in the vidalia.conf or torrc how to change its path. Maybe someone else knows either: 1) how to fix install_name_tool so it is happy, 2) how to tell Vidalia and Tor obfsproxy has a new home, or 3) how to statically link OpenSSL into obfsproxy. (I didn't see anything in the build scripts, but I didn't look very hard.)

comment:6 Changed 7 years ago by asn

I saw Sebastian suggesting the following patch in IRC:

-       cd $(OBFSPROXY_DIR) && libevent_CFLAGS=-I$(BUILT_DIR)/include libevent_LIBS="-L$(BUILT_DIR)/lib -levent" libcrypto_CFLAGS=-I$(BUILT_DIR)/include/openssl libcrypto_LIBS="-L$(BUILT_DIR)/lib -lssl -lcrypto" ./configure 
+       cd $(OBFSPROXY_DIR) && libevent_CFLAGS=-I$(BUILT_DIR)/include libevent_LIBS="$(BUILT_DIR)/lib/libevent.a" libcrypto_CFLAGS=-I$(BUILT_DIR)/include/openssl libcrypto_LIBS="$(BUILT_DIR)/lib/libz.a $(BUILT_DIR)/lib/libss

Did it work?

comment:7 Changed 7 years ago by Sebastian

Status: newneeds_review

Pushed a branch with two commits to bug6726 in my repository. Both are necessary to build obfsproxy for both 32bit and 64bit

comment:8 Changed 7 years ago by erinn

Resolution: fixed
Status: needs_reviewclosed

Merged! I've tested a 32-bit bundle and obfsproxy works. Closing now, the fix will be out soon with the new alpha bundles. Thanks!

Note: See TracTickets for help on using tickets.