[distcc] sendfile() not working on tmpfs

Eivind Magnus Hvidevold emh at hvidevold.cjb.net
Thu Jun 27 12:32:02 GMT 2002


The sendfile() function does not work when tmpfs is mounted on tmp.
When I umount /tmp or compile without sendfile() everything works.

Here's verbose output:
distcc[19095] (dcc_spawn_child) entered
distcc[19095] (dcc_spawn_child) forking to execute gcc -DHAVE_CONFIG_H -I. -I. -I. -DG_LOG_DOMAIN=g_log_domain_glib -O2 -Wall -D_REENTRANT -E gcache.c -o /tmp/distcc_0/cppout_0019095.i
distcc[19095] (dcc_spawn_child) child started as pid19096
distcc[19095] exec on 127.0.0.1: gcc -DHAVE_CONFIG_H -I. -I. -I. -DG_LOG_DOMAIN=g_log_domain_glib -O2 -Wall -D_REENTRANT -c gcache.c -o gcache.o
distcc[19095] (dcc_open_socket_out) client got connection to 127.0.0.1 port 4200 on fd5
distcc[19095] (dcc_wait_child) child 19096 terminated with status 0
distcc[19095] preprocessor on localhost completed ok
distcc[19095] (dcc_x_file) send 56626 byte file /tmp/distcc_0/cppout_0019095.i with token DOTI
distcc[19095] ERROR: (dcc_pump_sendfile) sendfile failed: Invalid argument
make[2]: *** [gcache.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
distcc[19049] (dcc_wait_child) child 19050 terminated with status 0
distcc[19049] preprocessor on localhost completed ok
distcc[19049] (dcc_x_file) send 87203 byte file /tmp/distcc_0/cppout_0019049.i with token DOTI
distcc[19049] ERROR: (dcc_pump_sendfile) sendfile failed: Invalid argument
make[2]: *** [garray.lo] Error 1
make[2]: Leaving directory `/tmp/build/glib.r18505/glib-1.2.10'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/build/glib.r18505/glib-1.2.10'
make: *** [all-recursive-am] Error 2

I used the following crude script to compile without sendfile.
If the sendfile problem is unfixable, please make --disable-sendfile a
configuration option.

find -name *\.c | while read file; do
sed 's/SENDFILE/BLAH/' $file > $file.fix &&
mv $file.fix $file
done &&
./configure &&
make &&
make install

Please cc replies to emh at hvidevold.cjb.net. 

EMH




More information about the distcc mailing list