Win 2012 Attempted to read or write protected memory
Moderators: TrackerSupp-Daniel, Tracker Support, Vasyl-Tracker Dev Team, Chris - Tracker Supp, Sean - Tracker, Tracker Supp-Stefan
Win 2012 Attempted to read or write protected memory
Hello,
We are using your PDF-XChange PRO SDK in our ASP.NET Web Application. Everything works correctly on Windows Server 2008 and 2008 R2 x64. However we have a problem with the Windows Server 2012 x64. Everytime when we try to load a .tif image using a method PXC_AddImageExW(Int32 pdf, String filename, Int32[] image, Int32 pages) from your pxclib40.dll we get following error:
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Type: System.AccessViolationException
StackTrace: PXC.PXC_AddImageExW(Int32 pdf, String filename, Int32[] image, Int32 pages)
There is a sample of code:
hresult = PXC.PXC_NewDocument( out pdf, licenceKey, developerCode );
if ( IS_DS_FAILED( hresult ) )
{
// creation new pdf document failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Creation a new PDF object" );
}
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, null, 0 );
if ( IS_DS_FAILED( hresult ) )
{
// loading tiff file failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF file" );
}
int pagesCount = hresult;
images = new int[ pagesCount ];
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, images, pagesCount );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF pages" );
}
Problem appears after the second call of the PXC_AddImageExW() method.
Please for help.
This post is doubled in PDF-X OCR SDK section however it fitts better here. There is the link:
https://forum.pdf-xchange.com/ ... 42&t=18932
Thanks in advance and regards,
Igor
We are using your PDF-XChange PRO SDK in our ASP.NET Web Application. Everything works correctly on Windows Server 2008 and 2008 R2 x64. However we have a problem with the Windows Server 2012 x64. Everytime when we try to load a .tif image using a method PXC_AddImageExW(Int32 pdf, String filename, Int32[] image, Int32 pages) from your pxclib40.dll we get following error:
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Type: System.AccessViolationException
StackTrace: PXC.PXC_AddImageExW(Int32 pdf, String filename, Int32[] image, Int32 pages)
There is a sample of code:
hresult = PXC.PXC_NewDocument( out pdf, licenceKey, developerCode );
if ( IS_DS_FAILED( hresult ) )
{
// creation new pdf document failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Creation a new PDF object" );
}
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, null, 0 );
if ( IS_DS_FAILED( hresult ) )
{
// loading tiff file failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF file" );
}
int pagesCount = hresult;
images = new int[ pagesCount ];
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, images, pagesCount );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF pages" );
}
Problem appears after the second call of the PXC_AddImageExW() method.
Please for help.
This post is doubled in PDF-X OCR SDK section however it fitts better here. There is the link:
https://forum.pdf-xchange.com/ ... 42&t=18932
Thanks in advance and regards,
Igor
- Tracker Supp-Stefan
- Site Admin
- Posts: 17948
- Joined: Mon Jan 12, 2009 8:07 am
- Location: London
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Hi Igor,
To support TIFF images you need to have the fm40tiff.dll distributed with your application. Can you please make sure that this file is present.
Please take a look at which files you need to redistribute for which feature here:
https://help.pdf-xchange.com/DEV/de ... df_xchange_
Regards,
Stefan
To support TIFF images you need to have the fm40tiff.dll distributed with your application. Can you please make sure that this file is present.
Please take a look at which files you need to redistribute for which feature here:
https://help.pdf-xchange.com/DEV/de ... df_xchange_
Regards,
Stefan
Re: Win 2012 Attempted to read or write protected memory
Hi Stefan,
Yes, of course, we are distributing the fm40tiff.dll file. There is a complete list of the dll files that we are distributing in application:
dscrt40.dll
fm40tiff.dll
ixclib40.dll
ocrtools.dll
pxclib40.dll
xccdx40.dll
xcpro40.dll
All files are 64-bit.
Regards,
Igor
Yes, of course, we are distributing the fm40tiff.dll file. There is a complete list of the dll files that we are distributing in application:
dscrt40.dll
fm40tiff.dll
ixclib40.dll
ocrtools.dll
pxclib40.dll
xccdx40.dll
xcpro40.dll
All files are 64-bit.
Regards,
Igor
- Ivan - Tracker Software
- Site Admin
- Posts: 3550
- Joined: Thu Jul 08, 2004 10:36 pm
- Location: Vancouver Island - Canada
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Does it happen on any TIFF file or only on particular file?
Just in case, can you send us sample TIFF where the problem is reproducible?
Just in case, can you send us sample TIFF where the problem is reproducible?
Tracker Software (Project Director)
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
Re: Win 2012 Attempted to read or write protected memory
Hello,
Our testers use different *.tif or *.tiff files and error occurs every time, so I think that it happens on any TIFF file. There is a sample file: Yesterday, I decided to reproduce it once again and I've noticed that the same error was thrown by the another method - PXC_CloseImage(Int32 pdf, Int32 image). Error details:
For easier investigation, I am attaching below the whole body of our method:
Note that everything works properly on Windows Server 2008 x64. Have you any ideas what is going wrong?
Regards,
Igor
Our testers use different *.tif or *.tiff files and error occurs every time, so I think that it happens on any TIFF file. There is a sample file: Yesterday, I decided to reproduce it once again and I've noticed that the same error was thrown by the another method - PXC_CloseImage(Int32 pdf, Int32 image). Error details:
It's very strange because before it was the PXC_AddImageExW(Int32 pdf, String filename, Int32[] image, Int32 pages).Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Type: System.AccessViolationException
StackTrace: at PXC.PXC_CloseImage(Int32 pdf, Int32 image)
at OcrUtility.AddTiffToPdf(String licenceKey, String developerCode, String tiffPath, Int32& pdf)
For easier investigation, I am attaching below the whole body of our method:
Code: Select all
public static int AddTiffToPdf( string licenceKey, string developerCode, string tiffPath, out int pdf )
{
int[] images = null;
int hresult;
pdf = -1;
try
{
hresult = PXC.PXC_NewDocument( out pdf, licenceKey, developerCode );
if ( IS_DS_FAILED( hresult ) )
{
// creation new pdf document failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Creation a new PDF object" );
}
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, null, 0 );
if ( IS_DS_FAILED( hresult ) )
{
// loading tiff file failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF file" );
}
int pagesCount = hresult;
images = new int[ pagesCount ];
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, images, pagesCount );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF pages" );
}
for ( int i = 0; i < images.Length; i++ )
{
try
{
// get dimensions
double width, height;
hresult = PXC.PXC_GetImageDimension( pdf, images[ i ], out width, out height );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Getting dimensions of image" );
}
// add page
int page;
hresult = PXC.PXC_AddPage( pdf, width, height, out page );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Adding page to PDF" );
}
// place image with original size
hresult = PXC.PXC_PlaceImage( page, images[ i ], 0, height, width, height );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Placing image on page" );
}
}
catch
{
continue;
}
}
return pagesCount;
}
finally
{
if ( images != null && pdf > 0 )
{
for ( int i = 0; i < images.Length; i++ )
{
hresult = PXC.PXC_CloseImage( pdf, images[ i ] );
if ( IS_DS_FAILED( hresult ) )
{
// closing images failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Closing image" );
}
}
}
}
}
Regards,
Igor
- Paul - Tracker Supp
- Site Admin
- Posts: 6901
- Joined: Wed Mar 25, 2009 10:37 pm
- Location: Chemainus, Canada
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Hi Igor,
I have created a Support Request Ticket for this item (internal only) RT#2036: Win 2012 Attempted to read or write protected memory and have assigned a high priority to it. The development team will get to this as soon as they can.
Please bear in mind that right now it is a major focus releasing the next build of the Editor and we will do our best to balance the needs of this against your need to have this issue resolved in a timely manner.
hth
I have created a Support Request Ticket for this item (internal only) RT#2036: Win 2012 Attempted to read or write protected memory and have assigned a high priority to it. The development team will get to this as soon as they can.
Please bear in mind that right now it is a major focus releasing the next build of the Editor and we will do our best to balance the needs of this against your need to have this issue resolved in a timely manner.
hth
Best regards
Paul O'Rorke
Tracker Support North America
http://www.tracker-software.com
Paul O'Rorke
Tracker Support North America
http://www.tracker-software.com
- Ivan - Tracker Software
- Site Admin
- Posts: 3550
- Joined: Thu Jul 08, 2004 10:36 pm
- Location: Vancouver Island - Canada
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Looks like the problem is with declaration used for functions like:
image should be an array of pointers, not array of Int32. On 32-bit machines it is the same and causes no problem, but on 64-bit OS for sure there will be memory override, etc.
Code: Select all
PXC.PXC_AddImageExW(Int32 pdf, String filename, Int32[] image, Int32 pages)
Tracker Software (Project Director)
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
Re: Win 2012 Attempted to read or write protected memory
Hi Ivan,
Thanks alot for your advice! It let us to solve all our problems with processing tiff files.
Regards,
Igor
Thanks alot for your advice! It let us to solve all our problems with processing tiff files.
Regards,
Igor
- John - Tracker Supp
- Site Admin
- Posts: 5219
- Joined: Tue Jun 29, 2004 10:34 am
- Location: United Kingdom
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Please to hear all is well Igor
If posting files to this forum - you must archive the files to a ZIP, RAR or 7z file or they will not be uploaded - thank you.
Best regards
Tracker Support
http://www.tracker-software.com
Best regards
Tracker Support
http://www.tracker-software.com
Re: Win 2012 Attempted to read or write protected memory
Hello,
Unfortunately, during tests we noticed another problem with pxclib40.dll (x64).
When converting multi-page tiff file to PDF, it converts correctly only odd pages of the tiff file. For even pages, only empty pages are created at the end of the PDF file. For example, if the tiff consists of 8 pages, the PDF will consist of first 4 pages with correct images from odd pages and 4 empty pages at the end.
I've investigated this problem very carefully and I've discovered that method PXC_AddImageExW( IntPtr pdf, string filename, IntPtr[] image, int pages ) creates pointers only for half of the all pages.
Please, look into my code:
For example, if the tiff file consists of 8 pages, the images array will look like:
Below, I'm attaching two files compressed. First is a tiff file before conversion. Second is a PDF after conversion. When I'm using a x86 version of the dll, everything works great. Unfortunately our solution requires usage of the x64 dlls.
Please for help.
Regards,
Igor
Unfortunately, during tests we noticed another problem with pxclib40.dll (x64).
When converting multi-page tiff file to PDF, it converts correctly only odd pages of the tiff file. For even pages, only empty pages are created at the end of the PDF file. For example, if the tiff consists of 8 pages, the PDF will consist of first 4 pages with correct images from odd pages and 4 empty pages at the end.
I've investigated this problem very carefully and I've discovered that method PXC_AddImageExW( IntPtr pdf, string filename, IntPtr[] image, int pages ) creates pointers only for half of the all pages.
Please, look into my code:
Code: Select all
public static int AddTiffToPdf( string licenceKey, string developerCode, string tiffPath, out IntPtr pdf )
{
IntPtr[] images = null;
int hresult;
pdf = IntPtr.Zero;
hresult = PXC.PXC_NewDocument( out pdf, licenceKey, developerCode );
if ( IS_DS_FAILED( hresult ) )
{
// creation new pdf document failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Creation a new PDF object" );
}
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, null, 0 );
if ( IS_DS_FAILED( hresult ) )
{
// loading tiff file failed
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF file" );
}
int pagesCount = hresult;
images = new IntPtr[ pagesCount ];
//making handles to the images located in the file
hresult = PXC.PXC_AddImageExW( pdf, tiffPath, images, pagesCount );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Loading TIFF pages" );
}
for ( int i = 0; i < images.Length; i++ )
{
try
{
// get dimensions
double width, height;
hresult = PXC.PXC_GetImageDimension( pdf, images[ i ], out width, out height );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Getting dimensions of image" );
}
// add page
IntPtr page;
hresult = PXC.PXC_AddPage( pdf, width, height, out page );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Adding page to PDF" );
}
// place image with original size
// this method automaticaly closes the image object
hresult = PXC.PXC_PlaceImage( page, images[ i ], 0, height, width, height );
if ( IS_DS_FAILED( hresult ) )
{
throw new PDFXChangeException( hresult, typeof( PXC ), "Placing image on page" );
}
}
catch
{
continue;
}
}
return pagesCount;
}
I've confirmed this issue on Windows Server 2012 x64 and Windows Server 2008 x64.images[0] = 8589934593
images[1] = 17179869187
images[2] = 25769803781
images[3] = 34359738375
images[4] = 0
images[5] = 0
images[6] = 0
images[7] = 0
Below, I'm attaching two files compressed. First is a tiff file before conversion. Second is a PDF after conversion. When I'm using a x86 version of the dll, everything works great. Unfortunately our solution requires usage of the x64 dlls.
Please for help.
Regards,
Igor
- Ivan - Tracker Software
- Site Admin
- Posts: 3550
- Joined: Thu Jul 08, 2004 10:36 pm
- Location: Vancouver Island - Canada
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Looks like it is the issue in the pxclib40.dll.
I can send you fixed version of the library for testing.
I can send you fixed version of the library for testing.
Tracker Software (Project Director)
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
Re: Win 2012 Attempted to read or write protected memory
That sounds great. Please, send it on my email address i.paszewski[at]lgbs.pl .
Regards,
Igor
Regards,
Igor
- Tracker Supp-Stefan
- Site Admin
- Posts: 17948
- Joined: Mon Jan 12, 2009 8:07 am
- Location: London
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Thanks Igor,
We will send you the custom build shortly.
Regards,
Stefan
We will send you the custom build shortly.
Regards,
Stefan
Re: Win 2012 Attempted to read or write protected memory
Hi Stefan,
Still I did not receive anything. When can I expect an email with a new dll file?
Regards,
Igor
Still I did not receive anything. When can I expect an email with a new dll file?
Regards,
Igor
- Tracker Supp-Stefan
- Site Admin
- Posts: 17948
- Joined: Mon Jan 12, 2009 8:07 am
- Location: London
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Hi Igor,
Ivan told me he will e-mail you directly when we spoke on the 30th of Oct. I will remind him today and we will see to send it to you asap!
Regards,
Stefan
Ivan told me he will e-mail you directly when we spoke on the 30th of Oct. I will remind him today and we will see to send it to you asap!
Regards,
Stefan
- Tracker Supp-Stefan
- Site Admin
- Posts: 17948
- Joined: Mon Jan 12, 2009 8:07 am
- Location: London
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Hi Igor,
I've just e-mailed you the custom .dll Please test with it and let us know the result!
Regards,
Stefan
I've just e-mailed you the custom .dll Please test with it and let us know the result!
Regards,
Stefan
Re: Win 2012 Attempted to read or write protected memory
Hi,
A new pxclib40.dll works perfectly! All problems with images conversion disappeared. Thank you very much for your help and commitment. Cooperation with you is a pleasure!
Regards,
Igor
A new pxclib40.dll works perfectly! All problems with images conversion disappeared. Thank you very much for your help and commitment. Cooperation with you is a pleasure!
Regards,
Igor
- Tracker Supp-Stefan
- Site Admin
- Posts: 17948
- Joined: Mon Jan 12, 2009 8:07 am
- Location: London
- Contact:
Re: Win 2012 Attempted to read or write protected memory
Great to hear that Igor!
I will let Ivan know that the changes he did worked correctly so that we can include them in the next official build as well.
Cheers,
Stefan
I will let Ivan know that the changes he did worked correctly so that we can include them in the next official build as well.
Cheers,
Stefan
Re: Win 2012 Attempted to read or write protected memory
Hello,
During test we noticed, when we add an uncompressed TIFF, the resulting PDF is compressed. When TIFF file is compressed, the resulting PDF has changed compression. We are using exactly the same code as above to convert the TIFF files to PDF. As you can see, we don't use any compression instructions, so we suspect that it's somehow done inside methods from your components. Could you explain us, which methods are responsible for this compression and what compression is it? What are the rules for how the resulting file is rendered? Is there possibility to disable or change that compression? This may be not a bad thing, but we have to know the whole conversion process in case of curious customers
I'm attaching two files. First is the TIFF with no compression, second is the PDF after conversion. Regards,
Igor
During test we noticed, when we add an uncompressed TIFF, the resulting PDF is compressed. When TIFF file is compressed, the resulting PDF has changed compression. We are using exactly the same code as above to convert the TIFF files to PDF. As you can see, we don't use any compression instructions, so we suspect that it's somehow done inside methods from your components. Could you explain us, which methods are responsible for this compression and what compression is it? What are the rules for how the resulting file is rendered? Is there possibility to disable or change that compression? This may be not a bad thing, but we have to know the whole conversion process in case of curious customers
I'm attaching two files. First is the TIFF with no compression, second is the PDF after conversion. Regards,
Igor
- Ivan - Tracker Software
- Site Admin
- Posts: 3550
- Joined: Thu Jul 08, 2004 10:36 pm
- Location: Vancouver Island - Canada
- Contact:
Re: Win 2012 Attempted to read or write protected memory
PDF files does not use image in their original representation. Instead it supports some encoding methods that may be used to compress raw images data.
Such encodings are: ASCIIHex, ASCII85, LZW, Flate, RunLength, CCITT, JBIG2, DCT (JPEG), and JPX (JPEG 2000).
So, when an image is added to the PDF it is decoded to raw format and than encoded by one (or more) of these encoders.
Which encoder(s) should be used you can specify via PXP_SetCompression function when you create PDF file using pdfxclib.
Such encodings are: ASCIIHex, ASCII85, LZW, Flate, RunLength, CCITT, JBIG2, DCT (JPEG), and JPX (JPEG 2000).
So, when an image is added to the PDF it is decoded to raw format and than encoded by one (or more) of these encoders.
Which encoder(s) should be used you can specify via PXP_SetCompression function when you create PDF file using pdfxclib.
Tracker Software (Project Director)
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
When attaching files to any message - please ensure they are archived and posted as a .ZIP, .RAR or .7z format - or they will not be posted - thanks.
Re: Win 2012 Attempted to read or write protected memory
Thanks for your reply. It's very helpful. Currently, we don't use the PXC_SetCompression method. Could you give me an information, which encoder(s) are used by default when adding images to the PDF?
Best,
Igor
Best,
Igor
- John - Tracker Supp
- Site Admin
- Posts: 5219
- Joined: Tue Jun 29, 2004 10:34 am
- Location: United Kingdom
- Contact:
Re: Win 2012 Attempted to read or write protected memory
The encoders used will be dependant on the image and if you wish to be sure which are used you should use the function as described by Ivan - we cannot advise which options are used without being aware of each and every image specifically added in every circumstance and this is obviously impractical.
If posting files to this forum - you must archive the files to a ZIP, RAR or 7z file or they will not be uploaded - thank you.
Best regards
Tracker Support
http://www.tracker-software.com
Best regards
Tracker Support
http://www.tracker-software.com