Description
The SecureRandom object held by the singleton instance of CmdGetNonce is accessed in an unsychronized manner by every thread processing a getnonce command on behalf of a connection. SecureRandom is not internally synchronized. It may only be used by one thread at a time. The result is that under sufficient offered load of getnonce commands, eventually two will access the SecureRandom object concurrently, with undefined resultant behavior. One of the resultant behaviors is a segfault, on some systems.
(Original description below)
I tested this on 2.2.2 and it did not crash mongod.
Script is attached. Let me know if you need help building (go app).
In a nutshell, this script is opening and closing connections rapidly in a lot of different threads (goroutines).
Mon Mar 18 11:28:50.628 [initandlisten] connection accepted from 127.0.0.1:60649 #1428 (100 connections now open)
|
Mon Mar 18 11:28:50.637 Invalid access at address: 0x101fffff8 from thread: conn1417
|
Mon Mar 18 11:28:50.637
|
Mon Mar 18 11:28:50.637 Invalid access at address: 0x101fffff8 from thread: conn1418
|
Mon Mar 18 11:28:50.637 Mon Mar 18 11:28:50.637 Invalid access at address: 0x101fffff8 from thread: conn1419
|
Mon Mar 18 11:28:50.637 Mon Mar 18 11:28:50.637
|
Invalid access at address: 0x101fffff8 from thread: conn1345
|
Got signal: 11 (Segmentation fault: 11).
|
|
Invalid access at address: 0x101fffff8 from thread: conn1421
|
Invalid access at address: 0x101fffff8 from thread: conn1422
|
Mon Mar 18 11:28:50.637
|
|
Mon Mar 18 11:28:50.637
|
|
Got signal: 11 (Segmentation fault: 11).
|
Mon Mar 18 11:28:50.637 Got signal: 11 (Segmentation fault: 11).
|
Mon Mar 18 11:28:50.637
|
Mon Mar 18 11:28:50.637 Got signal: 11 (Segmentation fault: 11).
|
|
Got signal: 11 (Segmentation fault: 11).
|
Got signal: 11 (Segmentation fault: 11).
|
This is on OSX.
I have a standalone go script that caused this (attached).
Mon Mar 18 11:28:50.638 Mon Mar 18 11:28:50.638 Invalid access at address: 0x101fffff8 from thread: conn1423
|
Invalid access at address: 0x101fffff8 from thread: conn1424
|
Mon Mar 18 11:28:50.638 Mon Mar 18 11:28:50.638
|
Mon Mar 18 11:28:50.638
|
Invalid access at address: 0x101fffff8 from thread: conn1425
|
Invalid access at address: 0x101fffff8 from thread: conn1426
|
Mon Mar 18 11:28:50.638 Mon Mar 18 11:28:50.638 Invalid access at address: 0x101fffff8 from thread: conn1427
|
Mon Mar 18 11:28:50.638
|
|
Invalid access at address: 0x101fffff8 from thread: conn1428
|
Got signal: 11 (Segmentation fault: 11).
|
|
Got signal: 11 (Segmentation fault: 11).
|
|
Mon Mar 18 11:28:50.638 Mon Mar 18 11:28:50.638
|
Mon Mar 18 11:28:50.638
|
Got signal: 11 (Segmentation fault: 11).
|
Got signal: 11 (Segmentation fault: 11).
|
Mon Mar 18 11:28:50.638 Got signal: 11 (Segmentation fault: 11).
|
|
|
Got signal: 11 (Segmentation fault: 11).
|
|
|
Mon Mar 18 11:28:50.662 Backtrace:
|
0x1006dbb8b 0x10000185b 0x100001f11 0x7fff8b6698ea 0x7fff00000002 0x7ea947259716e7ee
|
0 mongod 0x00000001006dbb8b _ZN5mongo15printStackTraceERSo + 43
|
1 mongod 0x000000010000185b _ZN5mongo10abruptQuitEi + 987
|
2 mongod 0x0000000100001f11 _ZN5mongo24abruptQuitWithAddrSignalEiP9__siginfoPv + 673
|
3 libsystem_c.dylib 0x00007fff8b6698ea _sigtramp + 26
|
4 ??? 0x00007fff00000002 0x0 + 140733193388034
|
5 ??? 0x7ea947259716e7ee 0x0 + 9126904346617243630
|
Mon Mar 18 11:28:50.662
|
Mon Mar 18 11:28:50.662 Backtrace:
|
0x1006dbb8b 0x10000185b 0x100001f11 0x7fff8b6698ea 0x7fff00000002 0x7ea947259716e7ee
|
0 mongod 0x00000001006dbb8b _ZN5mongo15printStackTraceERSo + 43
|
1 mongod 0x000000010000185b _ZN5mongo10abruptQuitEi + 987
|
2 mongod 0x0000000100001f11 _ZN5mongo24abruptQuitWithAddrSignalEiP9__siginfoPv + 673
|
3 libsystem_c.dylib 0x00007fff8b6698ea _sigtramp + 26
|
4 ??? 0x00007fff00000002 0x0 + 140733193388034
|
5 ??? 0x7ea947259716e7ee 0x0 + 9126904346617243630
|
Mon Mar 18 11:28:50.662 Mon Mar 18 11:28:50.662 Backtrace:
|
0x1006dbb8b 0x10000185b 0x100001f11 0x7fff8b6698ea 0x7fff00000002 0x7ea947259716e7ee
|
0 mongod 0x00000001006dbb8b _ZN5mongo15printStackTraceERSo + 43
|
1 mongod 0x000000010000185b _ZN5mongo10abruptQuitEi + 987
|
2 mongod 0x0000000100001f11 _ZN5mongo24abruptQuitWithAddrSignalEiP9__siginfoPv + 673
|
Attachments
Issue Links
- is duplicated by
-
SERVER-10331 Mongodb SEGFAULTS with a null pointer
-
- Closed
-
-
SERVER-9329 Invalid access at address - Segmentation fault
-
- Closed
-
- related to
-
SERVER-9362 Mongod crashes at first getnonce call if process started without stdout and stderr file descriptors initialized.
-
- Closed
-