I added my poll2.c to config/ompi_setup_libevent.m4 next to poll.c and was able to build successfully, but even if poll2() just (prints and) calls poll() - I get the following error (btl is specified to avoid loading my module at this time):

alex@singularity:~/huji/benchmarks/simple$ ~/huji/ompi4/bin/mpirun -mca btl self,tcp -n 2 ./pong
Inside poll2!
[singularity:32552] *** Process received signal ***
[singularity:32552] Signal: Segmentation fault (11)
[singularity:32552] Signal code: Address not mapped (1)
[singularity:32552] Failing at address: (nil)
[singularity:32552] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10060) [0x7f7d6ac26060]
[singularity:32552] *** End of error message ***
Segmentation fault
alex@singularity:~/huji/benchmarks/simple$


Any ideas?


On 03/02/2012 01:26 PM, Alex Margolin wrote:
Hi,

I'm trying to replace the poll() function with mine (say poll2() in poll2.c), and I got some building errors. This is after I copied poll2.c into opal/events/ and added it in the sources list in Makefile.am in that folder.

...
Making all in tools/wrappers
make[2]: Entering directory
`/home/alex/huji/openmpi-1.4.4/opal/tools/wrappers'
depbase=`echo opal_wrapper.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc "-DEXEEXT=\"\"" -I. -I../../../opal/include -I../../../orte/include
-I../../../ompi/include
-I../../../opal/mca/paffinity/linux/plpa/src/libplpa -I../../.. -O3
-DNDEBUG -m64 -finline-functions -fno-strict-aliasing -pthread
-fvisibility=hidden -MT opal_wrapper.o -MD -MP -MF $depbase.Tpo -c -o
opal_wrapper.o opal_wrapper.c &&\
mv -f $depbase.Tpo $depbase.Po
opal_wrapper.c: In function ‘main’:
opal_wrapper.c:733:21: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c: In function ‘data_init’:
opal_wrapper.c:375:13: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c: In function ‘data_callback’:
opal_wrapper.c:333:25: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c:358:21: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c: In function ‘add_extra_includes’:
opal_wrapper.c:233:17: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c: In function ‘load_env_data’:
opal_wrapper.c:429:13: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c:432:17: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c: In function ‘load_env_data_argv’:
opal_wrapper.c:453:13: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
opal_wrapper.c:456:17: warning: ignoring return value of ‘asprintf’,
declared with attribute warn_unused_result [-Wunused-result]
/bin/bash ../../../libtool --tag=CC --mode=link gcc -O3 -DNDEBUG -m64
-finline-functions -fno-strict-aliasing -pthread -fvisibility=hidden
-export-dynamic -o opal_wrapper opal_wrapper.o
../../../opal/libopen-pal.la -lnsl -lutil -lm
libtool: link: gcc -O3 -DNDEBUG -m64 -finline-functions
-fno-strict-aliasing -pthread -fvisibility=hidden -o .libs/opal_wrapper
opal_wrapper.o -Wl,--export-dynamic ../../../opal/.libs/libopen-pal.so
-ldl -lnsl -lutil -lm -pthread -Wl,-rpath -Wl,/home/alex/huji/ompi4/lib
../../../opal/.libs/libopen-pal.so: undefined reference to `poll2'
collect2: ld returned 1 exit status
make[2]: *** [opal_wrapper] Error 1
make[2]: Leaving directory
`/home/alex/huji/openmpi-1.4.4/opal/tools/wrappers'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/alex/huji/openmpi-1.4.4/opal'
make: *** [all-recursive] Error 1
alex@singularity:~/huji/openmpi-1.4.4$

It seems that I need to add poll2.c to OMPI_LIBEVENT_SOURCES, but I can't find it anywhere other then Makefile files, which are regenerated...
Am I missing something?

I know trying to replace poll() seems like I'm doing something very wrong, but I want to poll on events without a valid linux file descriptor (and existing events, specifically sockets, at the same time), and I see no other way. Obviously, my poll2 calls the linux poll in most cases.

Thanks,
Alex

Reply via email to