[Sheepdog] Segmentation fault when getting obj information
Wido den Hollander
wido at pcextreme.nl
Thu Apr 8 13:57:59 CEST 2010
Hi,
I just decreased my cluster (node failed...) from 4 to 3 nodes and now
it works fine, i haven't tested the patch yet.
But i just updated to the latest git revision and now compiling on my
node fails.
root at osd4:/usr/src/sheepdog# make
make -C shepherd
make[1]: Entering directory `/usr/src/sheepdog/shepherd'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/usr/src/sheepdog/shepherd'
make -C collie
make[1]: Entering directory `/usr/src/sheepdog/collie'
cc -c -g -O2 -Wall -Wstrict-prototypes -I../include -D_GNU_SOURCE
-DSD_VERSION=\"3ce47e2-be8cd4e\" collie.c -o collie.o
collie.c: In function ‘main’:
collie.c:64: error: ‘PATH_MAX’ undeclared (first use in this function)
collie.c:64: error: (Each undeclared identifier is reported only once
collie.c:64: error: for each function it appears in.)
collie.c:64: warning: unused variable ‘path’
make[1]: *** [collie.o] Error 1
make[1]: Leaving directory `/usr/src/sheepdog/collie'
make: *** [all] Error 2
root at osd4:/usr/src/sheepdog#
Any idea?
--
Met vriendelijke groet,
Wido den Hollander
Hoofd Systeembeheer / CSO
Telefoon Support Nederland: 0900 9633 (45 cpm)
Telefoon Support België: 0900 70312 (45 cpm)
Telefoon Direct: (+31) (0)20 50 60 104
Fax: +31 (0)20 50 60 111
E-mail: support at pcextreme.nl
Website: http://www.pcextreme.nl
Kennisbank: http://support.pcextreme.nl/
Netwerkstatus: http://nmc.pcextreme.nl
On Thu, 2010-04-08 at 02:18 +0000, MORITA Kazutaka wrote:
> Hi,
>
> On Thu, Apr 8, 2010 at 12:33 AM, Wido den Hollander <wido at pcextreme.nl> wrote:
> > Hi,
> >
> > I'm using the latest version (git revision) of Sheepdog, but when
> > getting "obj" information, shepherd segfaults:
> >
> > root at wido-desktop:~# shepherd info -t obj Wido
> > 457951fcbfc62f1
> > 0, 27ca81e942cd0eef, 3207b6b8f585c0b6, 457951fcbfc62f1
> > 1, 3207b6b8f585c0b6, 4f5de28d9ad07d49, 457951fcbfc62f1
> > 2, 4f5de28d9ad07d49, d3d995c9a4f4336a, 457951fcbfc62f1
> > Looking for the inode object 0x80fe96ac00000000 with 4 nodes
> >
> > Segmentation fault
>
> Thanks for your report!
> Can you try the following patch?
>
>
> diff --git a/shepherd/shepherd.c b/shepherd/shepherd.c
> index 1949f13..087c397 100644
> --- a/shepherd/shepherd.c
> +++ b/shepherd/shepherd.c
> @@ -777,9 +777,15 @@ static void parse_objs(uint64_t oid, obj_parser_func_t func, void *data)
> {
> char name[128];
> int i, fd, ret;
> + char *buf;
> +
> + buf = zalloc(sizeof(struct sheepdog_inode));
> + if (!buf) {
> + fprintf(stderr, "out of memory\n");
> + return;
> + }
>
> for (i = 0; i < nr_nodes; i++) {
> - char buf[sizeof(struct sheepdog_inode)];
> unsigned wlen = 0, rlen = sizeof(buf);
> struct sd_obj_req hdr;
> struct sd_obj_rsp *rsp = (struct sd_obj_rsp *)&hdr;
> @@ -808,6 +814,8 @@ static void parse_objs(uint64_t oid, obj_parser_func_t func, void *data)
> else
> func(name, oid, rsp, buf, data);
> }
> +
> + free(buf);
> }
>
> static void print_obj(char *vdiname, unsigned index)
More information about the sheepdog
mailing list