3 0 0 1

Issue with RFA fileLoggerFilename config option '{a}' and absolute paths


Using rfa8.2.1.L1.linux.rrg C++ on Linux, I have seen that the AppLogger log file is not generated correctly if the application is executed using the full path to the executable.

I have a ValueAdd Consumer application which configures application logging:

\Logger\AppLogger\fileLoggerEnabled  = true
\Logger\AppLogger\fileLoggerFilename = "{a}.rfa.log"

If I execute the application like this:


then the log file "TestConsumer.rfa.log" is created as expected.

But if I execute the application using the full path like this:


then either no log file is created, or occasionally a log file with a garbage name like

"ZZZZZZZZZZZZZZZZ\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ������������.rfa.log" is created.

Am I misconfiguring logging somehow, or is there another issue here?

If I run the application under valgrind

valgrind --tool=memcheck --track-origins=yes ./TestConsumer

no errors are reported, but if I run using the full path

valgrind --tool=memcheck  --track-origins=yes /the/path/to/the/application/TestConsumer

then errors like this are reported (full output attached as valgrind-output.txt):

==1234== Conditional jump or move depends on uninitialised value(s)
==1234==    at 0x56F1841: rfa::support::RFA_SearchAndReplace(int, int, char*&, int) (in lib/
==1234==    by 0x56F1A7C: rfa::support::RFA_FormatOptionString(char const*, char*, unsigned int) (in lib/
==1234==    by 0x56F1C7F: rfa::support::RFA_CreateDirectory(char const*, char*, unsigned int, bool) (in lib/
==1234==    by 0x591BDC4: rfa::logger::FileLogAction::init(rfa::common::RFA_String const&, long) (in lib/
==1234==    by 0x591BFD3: rfa::logger::FileLogAction::FileLogAction(rfa::common::RFA_String const&, long) (in lib/
==1234==    by 0x591779E: rfa::logger::ApplicationLoggerImpl::ApplicationLoggerImpl(rfa::common::ComponentName const&, rfa::config::ConfigTree const*) (in lib/
==1234==    by 0x5917BFA: rfa::logger::ApplicationLoggerImpl::acquireImpl(rfa::common::RFA_String const&) (in lib/
==1234==    by 0x6315198: rfa::valueAdd::admin::AdminCore::init() (in lib/
==1234==    by 0x63181DB: rfa::valueAdd::admin::ConsumerCore::initialize() (in lib/
==1234==    by 0x404D72: main (TestConsumer.cpp:49)
==1234==  Uninitialised value was created by a stack allocation
==1234==    at 0x56F171C: rfa::support::RFA_SearchAndReplace(int, int, char*&, int) (in lib/

valgrind-output.txt (13.8 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

56.3k 145 45 65


Thank you for reporting this issue.

According to your investigation, it looks like to a bug in the API.

Please contact RDC (Refinitiv Developer Connect) contacts in your company to submit this issue to the API support team for further investigation. RDC contacts can access Contact Premium Support on the RFA C++ product page to submit a ticket to the API support team.

Sorry for this inconvenience.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.