Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-6527

When a thread cannot be allocated, return cleanly from WT API

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Minor - P4 Minor - P4
    • WT10.0.0, 4.4.1, 4.7.0
    • Affects Version/s: WT3.2.1
    • Component/s: None
    • Labels:
      None

      Hi!

      We found that when WT is unable to create threads on DB open it crashes instead of returning proper error.

      Can be demonstrated by setting low limit on number of user processes:

      $ ulimit -Su 31
      $ ./ex_access 
      [1594723756:796801][5085:0x7f543e4e1740], eviction-server: __wt_thread_create, 33: pthread_create: Resource temporarily unavailable
      [1594723756:807185][5085:0x7f543e4e1740], connection: __thread_group_resize, 236: Error while resizing thread group: Resource temporarily unavailable
      [1594723756:807220][5085:0x7f543e4e1740], connection: __wt_panic, 494: the process must exit and restart: WT_PANIC: WiredTiger library panic
      Segmentation fault (core dumped)
      

      Under GDB:

      $ libtool --mode=execute gdb ./ex_access
      ...
      (gdb) r
      Starting program: /home/sbn/src/wiredtiger/wiredtiger-3.2.1/examples/c/.libs/lt-ex_access 
      [Thread debugging using libthread_db enabled]
      Using host libthread_db library "/lib64/libthread_db.so.1".
      Detaching after fork from child process 5180.
      Detaching after fork from child process 5181.
      [New Thread 0x7ffff6fe3700 (LWP 5183)]
      [New Thread 0x7ffff67e2700 (LWP 5184)]
      [New Thread 0x7ffff5fe1700 (LWP 5185)]
      [1594723808:345367][5176:0x7ffff7fe0740], eviction-server: __wt_thread_create, 33: pthread_create: Resource temporarily unavailable
      [Thread 0x7ffff5fe1700 (LWP 5185) exited]
      [Thread 0x7ffff67e2700 (LWP 5184) exited]
      [Thread 0x7ffff6fe3700 (LWP 5183) exited]
      [1594723808:357279][5176:0x7ffff7fe0740], connection: __thread_group_resize, 236: Error while resizing thread group: Resource temporarily unavailable
      [1594723808:357317][5176:0x7ffff7fe0740], connection: __wt_panic, 494: the process must exit and restart: WT_PANIC: WiredTiger library panic
      
      Program received signal SIGSEGV, Segmentation fault.
      __wt_cond_signal (session=0x7ffff7fb9010, cond=0x0) at src/os_posix/os_mtx_cond.c:174
      174         if (cond->waiters == -1 || (cond->waiters == 0 && __wt_atomic_casi32(&cond->waiters, 0, -1)))
      Missing separate debuginfos, use: debuginfo-install glibc-2.17-292.el7.x86_64
      (gdb) p cond
      $1 = (WT_CONDVAR *) 0x0
      (gdb)
      

      Thanks!

            Assignee:
            donald.anderson@mongodb.com Donald Anderson
            Reporter:
            Dmitri Shubin Dmitri Shubin
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: