Sometime: Debug Assertion Failed expression str!=NULL

Dear Experts,

I have just added a logging function into an existing program. Basically the program does alot of file convertion. It works fine until the logging function built in.

Im getting the error message like this:
Debug Assertion Failed!

Program: c:\file_extract\file_service.exe
File: fprintf.c
Line: 56

Expression: != NULL

For more information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.

(press Retry to debug the application)

The biggest problem is, this error message will only occur every 18 hours. this services will run every 2 minutes. when the error message occurs, the environment has no different as compare to 2 minutes before. the logging code:

void writeToZipLog(CString strMsg)
      //1) Only print into ZIPLog.txt when the string is NOT NULL
      //2) Print current date and time
      CTime datenow;
      datenow = datenow.GetCurrentTime();
      FILE *streamFile;
            streamFile      = fopen ("SBBZIPLog.txt", "a");
            fprintf (streamFile,"%s | %s\r\n", datenow.Format("%d-%m-%Y %H:%M:%S"), strMsg);
Who is Participating?
The C runtime library source code comes with VC++, so you can inspect fprintf.c for yourself.  Here's the relevant part:

int __cdecl fprintf (
        FILE *str,
        const char *format,
 * 'F'ile (stream) 'PRINT', 'F'ormatted
        REG1 FILE *stream;
        REG2 int buffing;
        int retval;
        va_start(arglist, format);

        _ASSERTE(str != NULL);      <-- THIS IS LINE 56
        _ASSERTE(format != NULL);

It would appear that you're passing a NULL pointer as the first argument in a call to fprintf.  

Are you sure that your FILE* was successfully set?  Perhaps your file open or create failed.

Check your file is successfully opened is append mode by using if(streamFile!=NULL)...and also include full path in fopen() while passing file name.


HeliumyapAuthor Commented:
I have tripple confirm that no other application is using the file.

i have set the if(streamFile!=NULL)... and if it really happens, write to another file. start from tomorrow morning, i should be able to see if it really happening.

i wish to write it to EvenLog. but in VC++ is just too tedious. btw, do you know any website sharing how VC++ should write to windows evenlog?

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Also 'Simple class to fire messages to Windows EventLog'

and Event Logging section at codeproject


HeliumyapAuthor Commented:
Hi Mahesh,

Oh no.. IT is still the same event i have the if(streamFile!=NULL) statement in the code.  

however, i remind this line of code:
streamFile     = fopen ("SBBZIPLog.txt", "a");

This program has been running for more than 6 days before it hit the "Debug Assertion Failed" error.

any more idea?
Have you checked that without using fopen..means using MFC class CFile etc ?

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.