On Mon, Jul 25, 2016 at 05:24:43PM -0700, Vinson Lee wrote: > > for each of these, otherwise the next syscall will be in the wrong slot. > > I tried making that change but trinity would crash in > copy_syscall_table with memcpy with a NULL from[n].entry. > > Program received signal SIGSEGV, Segmentation fault. > 0x000000000041300e in copy_syscall_table (from=0x63d840, nr=329) at > /usr/include/bits/string3.h:52 > 52 return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest)); > (gdb) bt > #0 0x000000000041300e in copy_syscall_table (from=0x63d840, nr=329) > at /usr/include/bits/string3.h:52 > #1 0x00000000004130f3 in select_syscall_tables () at tables.c:491 > #2 0x0000000000413e95 in main (argc=1, argv=0x7fffffffe438) at trinity.c:115 > > tables.c > 470 static struct syscalltable * copy_syscall_table(struct > syscalltable *from, unsigned int nr) > 471 { > 472 unsigned int n; > 473 struct syscallentry *copy; > 474 > 475 copy = alloc_shared(nr * sizeof(struct syscallentry)); > 476 if (copy == NULL) > 477 exit(EXIT_FAILURE); > 478 > 479 for (n = 0; n < nr; n++) { > 480 memcpy(copy + n , from[n].entry, sizeof(struct > syscallentry)); > 481 copy[n].number = n; > 482 copy[n].active_number = 0; > 483 from[n].entry = ©[n]; > 484 } > 485 return from; > 486 } stick a if (from[n] == NULL) continue before the memcpy. Does that dtrt ? We might segv somewhere else after patching this up. It's been so long since I touched this stuff I don't fully recall how it works. I'll poke at it some tomorrow. Dave -- To unsubscribe from this list: send the line "unsubscribe trinity" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html