Android's JVM requires threads to detach before they exit, but ONLY if
they needed to AttachCurrentThread. Conversly, threads that were
attached by the JVM (e.g. the result of making a native call from Java)
must NOT be detached by the application. This is bug 2441.
The fix for the above is to only pthread_setspecific() for threads that
Attach(), not for already-attached threads. To ensure that we only
detach Attached threads, added a GetEnv() call to ThreadDestructor(),
which revealed that Oracle's JVM can overly-eagerly clear TLS accounting
data, effectively detaching threads without their consent at shutdown.
Work around this with a specific check.
To guard against (some) regression, added a variant of PeerConnectionTest
that runs on a non-main thread. This revealed a bug in LinuxDeviceManager
which implicitly assumes its talk_base::Thread has already been
initialized. Fixed that here too.
BUG=2441
R=henrike@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/8759004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5567 4adac7df-926f-26a2-2b94-8c16560cd09d