~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/drizzled.cc

MergedĀ up.

Show diffs side-by-side

added added

removed removed

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