Hi,

Today I tried to upgrade to version 2.6.1 and started with slurmdbd.

The new one seems to have great problems with MySLQ (version 14.14).

Command
/usr/sbin/slurmdbd -D -vvvvvv
says:
slurmdbd: debug3: Trying to load plugin /usr/lib64/slurm/auth_munge.so
slurmdbd: auth plugin for Munge (http://code.google.com/p/munge/) loaded
slurmdbd: debug3: Success.
slurmdbd: debug3: Trying to load plugin 
/usr/lib64/slurm/accounting_storage_mysql.so
slurmdbd: debug2: mysql_connect() called for db slurm_acct_db
slurmdbd: debug4: (accounting_storage_mysql.c:1059) query
show tables like 'user_table';
slurmdbd: debug4: (accounting_storage_mysql.c:1079) query
show tables like 'haddock_assoc_table';
slurmdbd: debug4: (accounting_storage_mysql.c:1096) query
show columns from "haddock_assoc_table" where Field='is_def';
Segmentation fault (core dumped)

Please note that my version of MySQL does not like the "show
columns" command, and that this might possible be the source
of the problems:
mysql> show columns from "haddock_assoc_table" where Field='is_def';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 
'"haddock_assoc_table" where Field='is_def'' at line 1
mysql> show columns from haddock_assoc_table where Field='is_def';
+--------+------------+------+-----+---------+-------+
| Field  | Type       | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| is_def | tinyint(4) | NO   |     | 0       |       |
+--------+------------+------+-----+---------+-------+
1 row in set (0.00 sec)

It might be a bad idea to put citation marks (") around
table names, at least for the RHEL version of MySQL...

Command
"gdb/usr/sbin/slurmdbd"
gives
(gdb) run
Starting program: /usr/sbin/slurmdbd
[Thread debugging using libthread_db enabled]
[New Thread 0x2aaaae37f700 (LWP 5221)]
[Thread 0x2aaaae37f700 (LWP 5221) exited]

Program received signal SIGSEGV, Segmentation fault.
0x00000000004cb3c9 in slurm_diff_tv_str (tv1=0x7fffffffcb80, tv2=0x7fffffffcb70, 
tv_str=0x7fffffffcbd0 "9Z\215\253\252*", len_tv_str=20,
    from=0x76a018 "make table current \"haddock_assoc_table\"", limit=0, 
delta_t=0x0) at timers.c:59
59              (*delta_t)  = (tv2->tv_sec  - tv1->tv_sec) * 1000000;
Missing separate debuginfos, use: debuginfo-install 
slurm-slurmdbd-2.6.1-1.el6.x86_64
(gdb) bt
#0  0x00000000004cb3c9 in slurm_diff_tv_str (tv1=0x7fffffffcb80, tv2=0x7fffffffcb70, 
tv_str=0x7fffffffcbd0 "9Z\215\253\252*", len_tv_str=20,
    from=0x76a018 "make table current \"haddock_assoc_table\"", limit=0, 
delta_t=0x0) at timers.c:59
#1  0x00002aaaab8cdbf1 in _mysql_make_table_current (mysql_conn=0x74da08, table_name=0x7fffffffd730 
"\"haddock_assoc_table\"", fields=<value optimized out>,
    ending=0x2aaaab8d1c50 ", primary key (id_assoc),  unique index (user(20), 
acct(20), partition(20)))") at mysql_common.c:397
#2  mysql_db_create_table (mysql_conn=0x74da08, table_name=0x7fffffffd730 
"\"haddock_assoc_table\"", fields=<value optimized out>,
    ending=0x2aaaab8d1c50 ", primary key (id_assoc),  unique index (user(20), 
acct(20), partition(20)))") at mysql_common.c:797
#3  0x00002aaaab8a0a7e in create_cluster_tables (mysql_conn=0x74da08, 
cluster_name=0x769f78 "haddock") at accounting_storage_mysql.c:1107
#4  0x00002aaaab8a1534 in _as_mysql_acct_check_tables (mysql_conn=0x74da08) at 
accounting_storage_mysql.c:650
#5  0x00002aaaab8a1af0 in init () at accounting_storage_mysql.c:2104
#6  0x0000000000452460 in plugin_load_from_file (p=0x7fffffffde48, fq_path=0x73ed28 
"/usr/lib64/slurm/accounting_storage_mysql.so") at plugin.c:202
#7  0x0000000000452732 in plugin_load_and_link (type_name=<value optimized 
out>, n_syms=56, names=0x735a20, ptrs=0x73a700) at plugin.c:258
#8  0x00000000004528c1 in plugin_context_create (plugin_type=0x501aa0 
"accounting_storage", uler_type=<value optimized out>, ptrs=0x73a700, 
names=0x735a20,
    names_size=448) at plugin.c:397
#9  0x00000000004b17ea in slurm_acct_storage_init (loc=0x0) at 
slurm_accounting_storage.c:284
#10 0x000000000042d01e in main (argc=1, argv=<value optimized out>) at 
slurmdbd.c:129
(gdb) list 43,75
43      /*
44       * slurm_diff_tv_str - build a string showing the time difference 
between two
45       *                     times
46       * IN tv1 - start of event
47       * IN tv2 - end of event
48       * OUT tv_str - place to put delta time in format "usec=%ld"
49       * IN len_tv_str - size of tv_str in bytes
50       * IN from - where the function was called form
51       */
52      extern void slurm_diff_tv_str(struct timeval *tv1, struct timeval *tv2,
53                                    char *tv_str, int len_tv_str, char *from,
54                                    long limit, long *delta_t)
55      {
56              char p[64] = "";
57              struct tm tm;
58
59              (*delta_t)  = (tv2->tv_sec  - tv1->tv_sec) * 1000000;
60              (*delta_t) +=  tv2->tv_usec - tv1->tv_usec;
61              snprintf(tv_str, len_tv_str, "usec=%ld", *delta_t);
62              if (from) {
63                      if (!limit)
64                              limit = 1000000;
65                      if (*delta_t > limit) {
66                              if (!localtime_r(&tv2->tv_sec, &tm))
67                                      fprintf(stderr, "localtime_r() 
failed\n");
68                              if (strftime(p, sizeof(p), "%T", &tm) == 0)
69                                      fprintf(stderr, "strftime() returned 
0\n");
70                              verbose("Warning: Note very large processing "
71                                      "time from %s: %s began=%s.%3.3d",
72                                      from, tv_str, p, (int)(tv2->tv_usec / 
1000));
73                      }
74              }
75      }
(gdb) print *tv1
$6 = {tv_sec = 1378285293, tv_usec = 399161}
(gdb) print *tv2
$7 = {tv_sec = 1378285293, tv_usec = 399475}
(gdb) print len_tv_str
$8 = 20
(gdb) print from
$10 = 0x76a018 "make table current \"haddock_assoc_table\""
(gdb) print limit
$11 = 0
(gdb) print delta_t
$21 = (long int *) 0x0
(gdb) print *delta_t
Cannot access memory at address 0x0

Cheers,
-- Lennart Karlsson
   UPPMAX, Uppsala University, Sweden
   http://www.uppmax.uu.se

Reply via email to