~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/drizzled.cc

Merge Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
83
83
#ifdef HAVE_SYSENT_H
84
84
#include <sysent.h>
85
85
#endif
86
 
#ifdef HAVE_PWD_H
87
86
#include <pwd.h>                                // For getpwent
88
 
#endif
89
 
#ifdef HAVE_GRP_H
90
87
#include <grp.h>
91
 
#endif
92
88
 
93
89
#include <sys/resource.h>
94
90
 
108
104
 
109
105
#if defined(__FreeBSD__) && defined(HAVE_IEEEFP_H)
110
106
#include <ieeefp.h>
111
 
#ifdef HAVE_FP_EXCEPT                           // Fix type conflict
112
 
typedef fp_except fp_except_t;
113
 
#endif
114
107
#endif /* __FreeBSD__ && HAVE_IEEEFP_H */
115
108
 
116
109
#ifdef HAVE_FPU_CONTROL_H
254
247
 
255
248
char* opt_secure_file_priv= 0;
256
249
 
257
 
#ifdef HAVE_INITGROUPS
258
250
static bool calling_initgroups= false; /**< Used in SIGSEGV handler. */
259
 
#endif
260
251
 
261
252
uint32_t drizzled_bind_timeout;
262
253
std::bitset<12> test_flags;
670
661
static void set_user(const char *user, struct passwd *user_info_arg)
671
662
{
672
663
  assert(user_info_arg != 0);
673
 
#ifdef HAVE_INITGROUPS
674
664
  /*
675
665
    We can get a SIGSEGV when calling initgroups() on some systems when NSS
676
666
    is configured to use LDAP and the server is statically linked.  We set
680
670
  calling_initgroups= true;
681
671
  initgroups((char*) user, user_info_arg->pw_gid);
682
672
  calling_initgroups= false;
683
 
#endif
684
673
  if (setgid(user_info_arg->pw_gid) == -1)
685
674
  {
686
675
    sql_perror("setgid");
889
878
  fflush(stderr);
890
879
#endif /* HAVE_STACKTRACE */
891
880
 
892
 
#ifdef HAVE_INITGROUPS
893
881
  if (calling_initgroups)
894
882
    fprintf(stderr, _("\nThis crash occurred while the server was calling "
895
883
                      "initgroups(). This is\n"
902
890
                      "later when used with nscd), disable LDAP in your "
903
891
                      "nsswitch.conf, or use a\n"
904
892
                      "drizzled that is not statically linked.\n"));
905
 
#endif
906
893
 
907
894
  if (thd_lib_detected == THD_LIB_LT && !getenv("LD_ASSUME_KERNEL"))
908
895
    fprintf(stderr,
973
960
    sigaction(SIGFPE, &sa, NULL);
974
961
  }
975
962
 
976
 
#ifdef HAVE_GETRLIMIT
977
963
  if (test_flags.test(TEST_CORE_ON_SIGNAL))
978
964
  {
979
965
    /* Change limits so that we will get a core file */
980
966
    struct rlimit rl;
981
967
    rl.rlim_cur = rl.rlim_max = RLIM_INFINITY;
982
968
    if (setrlimit(RLIMIT_CORE, &rl) && global_system_variables.log_warnings)
983
 
        errmsg_printf(ERRMSG_LVL_WARN, _("setrlimit could not change the size of core files "
984
 
                          "to 'infinity';  We may not be able to generate a "
985
 
                          "core file on signals"));
 
969
        errmsg_printf(ERRMSG_LVL_WARN,
 
970
                      _("setrlimit could not change the size of core files "
 
971
                        "to 'infinity';  We may not be able to generate a "
 
972
                        "core file on signals"));
986
973
  }
987
 
#endif
988
974
  (void) sigemptyset(&set);
989
975
  my_sigset(SIGPIPE,SIG_IGN);
990
976
  sigaddset(&set,SIGPIPE);
1516
1502
    unireg_abort(1);
1517
1503
  }
1518
1504
 
1519
 
#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT)
 
1505
#if defined(MCL_CURRENT)
1520
1506
  if (locked_in_memory && !getuid())
1521
1507
  {
1522
1508
    if (setreuid((uid_t)-1, 0) == -1)
1588
1574
 
1589
1575
  if ((user_info= check_user(drizzled_user)))
1590
1576
  {
1591
 
#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT)
 
1577
#if defined(MCL_CURRENT)
1592
1578
    if (locked_in_memory) // getuid() == 0 here
1593
1579
      set_effective_user(user_info);
1594
1580
    else
1916
1902
   (char**) &dflt_key_cache_var.param_buff_size,
1917
1903
   (char**) 0,
1918
1904
   0, (GET_ULL),
1919
 
   REQUIRED_ARG, KEY_CACHE_SIZE, MALLOC_OVERHEAD, SIZE_T_MAX, MALLOC_OVERHEAD,
 
1905
   REQUIRED_ARG, KEY_CACHE_SIZE, MALLOC_OVERHEAD, SIZE_MAX, MALLOC_OVERHEAD,
1920
1906
   IO_SIZE, 0},
1921
1907
  {"key_cache_age_threshold", OPT_KEY_CACHE_AGE_THRESHOLD,
1922
1908
   N_("This characterizes the number of hits a hot block has to be untouched "