Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

NTDLL Access Violation - RB Enterprise 12.03, Delphi 7, Windows Server 2008

edited March 2011 in General

I am getting the following access violation on a Report Builder report. This
is a plain Windows 32 app.

The error does not occur when the application runs on a Windows Server 2003,
or a Windows XP workstation. The error occurs when the application runs on a
Windows 2008 server - no R2.

Access violation at address 77D38879 in module 'ntdll.dll'. Read of address
00000114

It appears to happen when calling ppReport1.Print with either a device type
of dtPDF or dtXLSReport.

Can you help me track down this error?

Thanks,
Steve Elliott

Comments

  • edited March 2011
    Hi Steve,

    Which version of ReportBuilder and Delphi are you using? Are you able
    to recreate this with a simple minimal application (Report and button on
    a form)? Try setting your library path to RB source and tracing after
    the AV to see where the exception is actually occurring.


    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited March 2011
    The version of RB and Delphi are in the subject of the originally posted
    message.

    I have not yet tried to duplicate with a minimal application. I will see if
    I can put one together.

    Unforntunately, I do not have a development envirnoment on Windows Server
    2008. So tracing into the source would be a problem.

    I was hoping someone else had encountered the issue before.

    I notice that if the call to ppReport1.Print is retried a time or two, it
    generally succeeds on subsequent calls.

  • edited March 2011
    OK. RB 12.03, Delphi 7.

    Here is a simple test program that replicates the issue on a Windows 2008
    (non R2) server:

    1. Drop a ppReport on a form.

    2. Edit the report, put a label in the header of the report.

    3. Add ppTypes to the user section of the form.

    4. Drop a button on the form.

    5. Add the following code to the onclick event of the button:

    ppreport1.AllowPrintToFile := True;
    ppReport1.ShowPrintDialog := false;
    ppReport1.ShowCancelDialog := false;
    ppReport1.showautosearchdialog := false;
    ppReport1.PDFSettings.OpenPDFFile := false;
    ppReport1.TextFileName := 'c:\test$$$.pdf';
    ppReport1.PDFSettings.ScaleImages := False;
    ppReport1.NoDataBehaviors := [ndBlankReport, ndMessageOnPage];
    ppReport1.DeviceType := dtPDF;
    ppReport1.Print;

    It produces the error on a Windows 2008 Server first time the button is
    clicked, but not subsequent times.

    Exit the program and restart, it again produces the error the first time the
    button is clicked but not subsequent times.


  • edited March 2011
    I also upgraded to RB Enterprise 12.04, and the issue persists.

  • edited March 2011
    Hi Steve,

    Sorry, I did not see the version number in the subject.

    We have not seen anything like this before with any other customers.
    One item that stands out in your code is the file location. I wonder if
    perhaps trying to write to the root directory is causing a problem. You
    might try changing this to a location you are sure you have write access
    and see if that changes anything.


    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited March 2011
    In the actual application, the path is variable - and depends on the
    installation. It is never at the root.

    But in any case, with the test app, the 2nd time you try to print, it
    succeeds.

    Interesting thing is though, in testing, actually moving the directory the
    application is in has reduced the number of occurences of the error for a
    short while.

  • edited March 2011
    I tracked down what appears to be causing the issue.

    The Print Spooler Service was not started on the server in question.

    Once I started the Print Spooler Service on the server, the error message
    went away.

    Maybe an issue to log for future reference?

    Anyway, thanks for responding.


This discussion has been closed.