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

RBoraclereportserver EaccessViolation

edited December 2005 in Server
Hi,

in am using RBoraclereportserver based on your examples, it is started by
then winservice rbservice.exe. On my machine everything runs fine.

On the test machine of one of our customers sometimes rporaclereportservice
runs into Eaccesviolation. Sometimes pressing F5 in the browser gets the
report running again. Sometimes i have to open the service en manualy start
it again.

As U understand manualy restarting it again is a big problem.

I use rbserver.exe, rboraclereportserver.exe, webtiercomserver.ocx and run
it in a aspx page.
I know my information is a bit vague but I need some advice on how do i
aprouch this? Do i have to think of thread issues or could it be something
in the loaded report. or... any advice is welcome...

The complete error message in the browser is:
"Server Error: Processing request for report
Envirionweb\FinancieleRapportage EAccessViolation Access violation at
address 00403A5E in module rbOracleReportServer.exe Read of address
00000013"

Thanks in advance

Ruud

Comments

  • edited December 2005

    The message indicates the error occurs in the report server app and the name
    of the report is 'Envirionweb\FinancieleRapportage'

    Try to determine whether it is only that report that causes the error.

    What you need is to be able to reproduce the error on your machine. Then you
    can run the report server in Delphi as a standard .exe and use the Delphi
    debugger with break on exceptions set to true.

    The reports must be thread-safe. Primarily you have to provide a thread safe
    database connection as shown in the ReportBuilder demos and described in the
    RBServer developers guide. Basically it requires using a TDatabase
    connection or TDOAConnection object or whatever on the report volume module.

    The Report Service will try to restart the report server when a fatal
    exception occurs - it may take a several seconds or more for this happen.
    However, there might cases in which it is unable to do so.



    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited December 2005
    Hi Nard,

    I'am able to reproduce the error on my machine now. The problem is snot
    related to 1 report. It can happen to every report.

    The exe says : Trs Server - Fatal Exception. In the debugger it first runs
    in an access violation. The stack window is empty and delphi shows the cpu
    window. If i close the cpu window and press F7 (step) the first line delphi
    stops on is in unit ppcom on the begin of :
    constructor TppCommunicator.Create(aOwner: TComponent);

    If i restart the server using the start/stop button en click refesh on the
    browser an access violation occurs. (now without the Trs Server - Fatal
    Error).

    If i stop the rboraclereportserver.exe it give another access violation.
    Then i start it again. Use refresh in the browser and the report works ok.
    If i use refresh again the error is back again. If i change the session id
    in the URL then averythings stays ok.

    The debugger doesn't stop on line i wrote and i don't know what i can do to
    get more info to tackle this.

    kind regards

    Ruud

  • edited December 2005

    1. When debuggins, it is also useful to examine the call stack to see what
    happened that lead to the error. (perhaps you have done this already?)

    2. Try running the RB Server Examples and compare the difference.

    3. Make sure that the reports are thread-safe. At minimum they need a
    thread-safe data connection.

    4. Try creating a series of reports. Create a report that contains a single
    label (no data access). Does that work correctly on the server? Then add a
    simple single query report and test that. Incrementally add complexity until
    it breaks.





    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited December 2005
    Hi Nard,

    I took the rboraclereportserver demo and started all over again.

    I had to add some things for compatibility because they are used in the
    reports.

    I added 3 empty procedures:
    procedure TDatamodule1.ppReportBeforeAutoSearchDialogCreate(Sender:
    TObject);
    procedure TDatamodule1.ppReportPreviewFormCreate(Sender: TObject);
    procedure TDatamodule1.ppReportGetAutoSearchValues(Sender: TObject);

    and i added some units for teechart, etc. It looks like this now:

    uses
    Classes, Oracle, DB, OracleData,
    ppComm, ppRelatv, ppDB,
    ppDBPipe,racodmod,rsReportVolumeEvents,ppreport,pptypes,
    rsReportVolume, rsReportVolumeReportExplorer, ppRptExp,ppRTTI,ppChrtDP,
    ppmodule,
    rsReportVolumeStorage, rsReportVolumeTemplate;

    i do still get the error, the stack is empty and the acces violation error
    is followed by a streamerror.

    i wil start testing with simple reports and add start adding stuf but it is
    very time consuming.

    meanwhile : if you have any other sugestions they are very welkom.

    Thanks in advance

    Ruud


  • edited December 2005

    For a Server based report, BeforeAutoSearchDialogCreate and
    OnPreviewFormCreate will not fire (at least I do not think they will). That
    is because the dialogs get created on the Client side. The TrsClientReport
    has these events.




    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
  • edited December 2005
    Hi Nard,

    I added those because they have to be present for compatibility reasons. The
    aplication where i create the reports adds this to the report definition.

    I changed a report and removed the subreports and teecharts. Now the error
    seems to be gone.
    Are ther known issues? I will investigate further and put the subreport in
    again and later te charts...

    i will let you know....

    kind regards Ruud




  • edited December 2005

    There are no known issues with subreports.

    However, TeeChart has caused some issues.

    1. The server application needs to contain references to the relevant chart
    units. ppChrt and ppChrtDP plus any extra TeeChart series units. (some of
    the Tee series are in separate units).

    2. There are some chart series that reference other objects - such as a
    chart function or another series. TeeChart does not always manage these
    references correctly - this causes AV's when the chart is destroyed. The
    errors do not show up when using a Teechart on a TForm, but show up when
    using TeeChart in the RB environment. The latest version of TeeChart is
    supposed to contain fixes for this. A possible work around is to explictly
    free the chart in the TDataModule.OnDestroy event.






    Best regards,

    Nard Moseley
    Digital Metaphors
    www.digital-metaphors.com
This discussion has been closed.