Skip to main content



Access Violation Exception (0Xc0000005) When Trying To Read From Memory Location 0X00000024


1 comment

  • Avatar
    Ian Cummings
    Make sure that the BarTender v9.40 installed is from the latest service release, as this release addresses a number of issues that could be causing such a problem.

    If not using v9.40 SR3 you will need to upgrade and test to see if you get the same problems.

    Could it be that your application is running as a Windows service? If so, the problem you might be experiencing has to do with the non-interactive desktop heap memory value. This is a portion of memory reserved for use by Windows services.

    Here is some background information:

    When BarTender is used in a "service context", it can be negatively impacted by a system setting known as "desktop heap". It is important to understand when this can occur, and how to correct the problem.

    Desktop Heap
    The "desktop heap" is a certain area of memory that is used to store information about windows, as well as objects that are used for drawing and printing. For more advanced technical information about what desktop heap is, see here:

    In general, console (command line) applications do not use desktop heap memory. However, BarTender is a "Windows application", rather than a console application. When a service controls bartend.exe processes one must understand that the BarTender application file is an integral part of the label designer, and it is impossible to print without creating several different windows, including the entire editor view. Those windows exist even when you cannot see them, and they use "desktop heap" memory.

    Each instance of BarTender takes up desktop heap memory, and each format that is opened uses a bit more. (The exact numbers are difficult to measure, and vary by version, but in general as we add features in newer versions, we've been using a bit more desktop heap.)

    The total amount of desktop heap memory depends on the "session" you are using. When you log in to your system, you have a visible "desktop" that belongs to your user name. That session has a block of heap memory, which is shared between applications in that session. If a different user logs in through Remote Desktop, they are using a separate desktop heap. The amount of desktop heap memory available to these sessions is known as the Interactive Desktop Heap.

    Services run under a different session and have their own "desktop", even though you can't see it. Each service can have its own desktop, and therefore its own desktop heap. But there are many services on your system, so in order to limit the memory usage, Windows defaults the desktop heap size to a much lower value in this case. The amount of desktop heap memory available to these sessions is known as the Non-Interactive Desktop Heap.

    Now, BarTender always uses desktop heap memory (every application that shows a user interface does). The interactive desktop heap is a number large enough to let you open thousands of windows, so we rarely see desktop heap as a problem in interactive sessions. But when running as a service, we can max out the default non-interactive desktop heap.

    This can be difficult to diagnose. A common symptom is that when loading another format, BarTender may log an error like "Failed to create empty label format." However, this message is not guaranteed, sometimes BarTender will crash instead. It can also potentially print incorrectly, with missing fields. Depending on the credentials the service is running under, it may also be sharing a desktop heap with other services, and cause those services to malfunction in unpredictable ways.

    If you are spawning BarTender under a service context, and you are encountering any type of reliability problem which does not occur when running BarTender either interactively or from a controlling program that runs as an application, then this is a possible cause.

    You can adjust the heap settings in the registry. However, the settings are embedded within a larger configuration string, and making a mistake is potentially dangerous. Therefore, we've created a tool to make this easier:


    You will need to reboot for the setting to take effect (restarting the service is not enough).

    Start with an increase of the Non-Interactive Desktop Heap to 1024K, if you still see problems bump this up to 2048 instead. the more BarTender processes you run in the BarTender command handler and the more label formats you might open the higher the requirement for this value. Increase by increments of 512 KB.

    If you still have problems then you'll need to contact technical support for your region as development will need to anaylize your dump files which goes out of the scope of a forum question. We'll also need to make sure you are a fully registered user of our software.

    Tech support contact details can be found below:

Please sign in to leave a comment.