Closed khuck closed 5 years ago
@hkaiser Update: after running in the debugger, I found that the string being tested is "floorint" instead of "floor". The extract_function_name function is supposed to strip off the int. Why would it fail?
this is where the exception is thrown: https://github.com/STEllAR-GROUP/phylanx/blob/af8f25255bba908362d524bcce90506710c5a6f6/src/plugins/arithmetics/generic_operation.cpp#L293-L294
Really odd. The generic_operation::generic_operation constructor is initializing funcname with the value of (detail::extract_function_name(name)). But extract_function_name() function doesn't seem to actually execute in some cases! Or if it does, it only does this much: /phylanx/floor__int$0/0$1$1 -> floor__int
. I added some std::out() statements in the detail::extract_function_name() function, and it doesn't seem to get called. Is there some virtual/override annotation missing? See https://github.com/STEllAR-GROUP/phylanx/blob/af8f25255bba908362d524bcce90506710c5a6f6/src/plugins/arithmetics/generic_operation.cpp#L85-L119
A better question would be why the original string is /phylanx/floor__int$0/0$1$1
and not floor
. After the test program iterates through the list of operations in https://github.com/STEllAR-GROUP/phylanx/blob/af8f25255bba908362d524bcce90506710c5a6f6/src/plugins/arithmetics/generic_operation.cpp#L46-L81 it does a few extra "floor" passes. Sometimes the input strings are short, sometimes they are long primitive names. Is something iterating past the end of the vector?
@hkaiser @scheherzade WOW. I think we are pushing the limits of the linkers. If I change the name of detail::extract_function_name to something unique (i.e. detail::extract_function_name_kevin), the error goes away...
This was fixed by merging #774
Reproduced the transient argument processing error (see http://ktau.nic.uoregon.edu:8020/#/builders/8/builds/383/steps/12/logs/stdio) with the test program:
/var/lib/buildbot/slaves/phylanx/x86_64-gcc7-release/build/tools/buildbot/build-delphi-x86_64-Linux-gcc/phylanx-Release/bin/generic_operation_test --hpx:threads=1 --hpx:localities=1 --hpx:node=0
Will crash regardless of whether any arguments are passed to it (I tried eliminating them one at a time). The output in gdb is (unfortunately a Release build, so not much useful info):