[SERVER-8535] Removing permissions on log directory causes stack dump Created: 12/Feb/13  Updated: 11/Jul/16  Resolved: 11/Sep/13

Status: Closed
Project: Core Server
Component/s: Logging
Affects Version/s: 2.2.2, 2.2.3
Fix Version/s: 2.5.3

Type: Bug Priority: Major - P3
Reporter: William Zola Assignee: Kyle Erf
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Operating System: ALL
Participants:

 Description   

Reproduce-by:

  • Remove the read/write/execute permissions on the log directory from the 'mongodb' user
  • Start up 'mongod' with --logpath pointing to that directory

'mongod' will abort with a stack trace

Stack trace from OSX:

Tue Feb 12 12:20:13 terminate() called, printing stack (if implemented for platform):
0x10059544b 0x1000010c3 0x7fff897fa001 0x7fff897fa05c 0x7fff897fb152 0x100014ec2 0x1001285d9 0x100007211 0x10000f2c9 0x100000db4 
 0   mongod                              0x000000010059544b _ZN5mongo15printStackTraceERSo + 43
 1   mongod                              0x00000001000010c3 _ZN5mongo11myterminateEv + 67
 2   libc++abi.dylib                     0x00007fff897fa001 _Z19safe_handler_callerPFvvE + 11
 3   libc++abi.dylib                     0x00007fff897fa05c __cxa_bad_typeid + 0
 4   libc++abi.dylib                     0x00007fff897fb152 _Z23__gxx_exception_cleanup19_Unwind_Reason_CodeP17_Unwind_Exception + 0
 5   mongod                              0x0000000100014ec2 _ZN5boost11filesystem26existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7_ + 210
 6   mongod                              0x00000001001285d9 _ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE + 12937
 7   mongod                              0x0000000100007211 _ZL11mongoDbMainiPPc + 4033
 8   mongod                              0x000000010000f2c9 main + 9
 9   mongod                              0x0000000100000db4 start + 52
Tue Feb 12 12:20:13 Got signal: 6 (Abort trap: 6).
 
Tue Feb 12 12:20:13 Backtrace:
0x10059544b 0x10000197b 0x7fff8f580cfa 0 0x7fff8f51fa7a 0x1000010c8 0x7fff897fa001 0x7fff897fa05c 0x7fff897fb152 0x100014ec2 0x1001285d9 0x100007211 0x10000f2c9 0x100000db4 
 0   mongod                              0x000000010059544b _ZN5mongo15printStackTraceERSo + 43
 1   mongod                              0x000000010000197b _ZN5mongo10abruptQuitEi + 987
 2   libsystem_c.dylib                   0x00007fff8f580cfa _sigtramp + 26
 3   ???                                 0x0000000000000000 0x0 + 0
 4   libsystem_c.dylib                   0x00007fff8f51fa7a abort + 143
 5   mongod                              0x00000001000010c8 _ZN5mongo11myterminateEv + 72
 6   libc++abi.dylib                     0x00007fff897fa001 _Z19safe_handler_callerPFvvE + 11
 7   libc++abi.dylib                     0x00007fff897fa05c __cxa_bad_typeid + 0
 8   libc++abi.dylib                     0x00007fff897fb152 _Z23__gxx_exception_cleanup19_Unwind_Reason_CodeP17_Unwind_Exception + 0
 9   mongod                              0x0000000100014ec2 _ZN5boost11filesystem26existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7_ + 210
 10  mongod                              0x00000001001285d9 _ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE + 12937
 11  mongod                              0x0000000100007211 _ZL11mongoDbMainiPPc + 4033
 12  mongod                              0x000000010000f2c9 main + 9
 13  mongod                              0x0000000100000db4 start + 52

Stack trace for Linux:

Tue Feb 5 18:46:58 terminate() called, printing stack (if implemented for platform):
0xaffd31 0x55840e 0x3c39ebce16 0x3c39ebce43 0x3c39ebcf2a 0x577be4 0x686836 0x55f070 0x565d39 0x2b3ee88cf9c4 0x558149
/usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31]
/usr/bin/mongod(_ZN5mongo11myterminateEv+0x3e) [0x55840e]
/usr/lib64/libstdc++.so.6 [0x3c39ebce16]
/usr/lib64/libstdc++.so.6 [0x3c39ebce43]
/usr/lib64/libstdc++.so.6 [0x3c39ebcf2a]
/usr/bin/mongod(ZN5boost11filesystem26existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7+0xc4) [0x577be4]
/usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x39c6) [0x686836]
/usr/bin/mongod [0x55f070]
/usr/bin/mongod(main+0x9) [0x565d39]
/lib64/libc.so.6(__libc_start_main+0xf4) [0x2b3ee88cf9c4]
/usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149]
Tue Feb 5 18:46:58 Got signal: 6 (Aborted).
 
Tue Feb 5 18:46:58 Backtrace:
0xaffd31 0x558bb9 0x2b3ee88e2330 0x2b3ee88e22c5 0x2b3ee88e3d70 0x558413 0x3c39ebce16 0x3c39ebce43 0x3c39ebcf2a 0x577be4 0x686836 0x55f070 0x565d39 0x2b3ee88cf9c4 0x558149
/usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31]
/usr/bin/mongod(_ZN5mongo10abruptQuitEi+0x399) [0x558bb9]
/lib64/libc.so.6 [0x2b3ee88e2330]
/lib64/libc.so.6(gsignal+0x35) [0x2b3ee88e22c5]
/lib64/libc.so.6(abort+0x110) [0x2b3ee88e3d70]
/usr/bin/mongod(_ZN5mongo11myterminateEv+0x43) [0x558413]
/usr/lib64/libstdc++.so.6 [0x3c39ebce16]
/usr/lib64/libstdc++.so.6 [0x3c39ebce43]
/usr/lib64/libstdc++.so.6 [0x3c39ebcf2a]
/usr/bin/mongod(ZN5boost11filesystem26existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7+0xc4) [0x577be4]
/usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x39c6) [0x686836]
/usr/bin/mongod [0x55f070]
/usr/bin/mongod(main+0x9) [0x565d39]
/lib64/libc.so.6(__libc_start_main+0xf4) [0x2b3ee88cf9c4]
/usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149]
 
[FAILED]



 Comments   
Comment by auto [ 11/Sep/13 ]

Author:

{u'name': u'Kyle Erf', u'email': u'erf@mongodb.com'}

Message: SERVER-8535 Added exception logic to filesystem::exists call

Many of our calls to boost::filesystem::exists() do not treat it
as a function that throws exceptions. Adding logic to catch these
can stop various obscure permissions-related problems.

Signed-off-by: Matt Kangas <matt.kangas@mongodb.com>
Branch: master
https://github.com/mongodb/mongo/commit/3933363992530034111111ae8f46b01826bfec85

Comment by Matt Kangas [ 27/Aug/13 ]

Eliot says we should fassert and exit in this situation. Ok to change current behavior.

Generated at Thu Feb 08 03:17:42 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.