EldoS | Feel safer!

Software components for data protection, secure storage and transfer

cbfs 5.1 read error 0xC00000E8

Also by EldoS: Rethync
The cross-platform framework that simplifies synchronizing data between mobile and desktop applications and servers and cloud storages
Posted: 04/28/2016 12:22:22
by Traum Lou (Standard support level)
Joined: 01/28/2014
Posts: 8


A really strange problem occurs to me,

I mount my network filesystem using cbfs 5.1, I use davinci resolve to load and compose lots of tiff file to a video, I when I try to play the video (it will read all the tiff file as I see in procmon), some of the tiff file would not be read. (in davinci, it shows red picture means it can't be load the file), I try to use procmon to catch all the local win32 api, and I found that the ReadFile's return value is 0xC00000E8, this is ntstatus values means STATUS_INVALID_USER_BUFFER

you can see the picture in the attachment.

don't understand that I print all the log in my filesystem, the read file callback works good, it does not have any error, we try to run lots of tests about this error. But finally, we doubt that this might be the cbfs problem,

you can see the website below,


it said,

ERROR_INVALID_USER_BUFFER or ERROR_NOT_ENOUGH_MEMORY Each device driver maintains a fixed-size list (in a nonpaged pool) of outstanding I/O requests. If this list is full, the system can’t queue your request, ReadFile and WriteFile return FALSE, and GetLast-Error reports one of these two error codes (depending on the driver).

I think this might be the problem, the cbfs might have a fixed-size list, and the list is full so it can't que the request. but I'm not sure, so that's why I try to ask for help. I would really appreciate if you can help me solve this problem.

Sorry for my english, if there's anything that you don't understand or you need any further information that can help you locate the problem, I would really glad to help.

Thanks a lot

Posted: 04/28/2016 23:05:33
by Traum Lou (Standard support level)
Joined: 01/28/2014
Posts: 8

I wonder if there's any cbfs debugging log?

I look through the reference, Extended logging is only used for install() function, or enabling a kernel-mode dump file, is there any way to see the cbfs internal log?
Posted: 04/29/2016 02:33:57
by Traum Lou (Standard support level)
Joined: 01/28/2014
Posts: 8


the settings of the cbfs is:

the reason we set all the cache false is that, after the test, it would decrease the read performance if we set it true.

I hope this would be helpful
Posted: 04/29/2016 05:28:26
by Volodymyr Zinin (Team)


Thank you for the detailed description. Unfortunately CBFS doesn't have internal logs which somehow can be connected to the problem. Also we have not had any similar reports before.
Could you please check whether the problem is reproducible with the CBFS Mapper sample? Set there the storage type (StorageType), storage characteristics (StorageCharacteristics), and mounting point (AddMountingPoint) parameters to be the same as your application has and try to reproduce it.

Posted: 04/29/2016 06:14:56
by Traum Lou (Standard support level)
Joined: 01/28/2014
Posts: 8

I use Mapper to check again, it works good, but it does not means everything in cbfs is ok.

because Mapper and my network filesystem have lots of differences

for example,
mapper reads the local drive file, network filesystem reads the file from remote server,
network filesystem has longer delay,
the read/write performance of network filesystem is much faster than mapper,
network filesystem might read or write a huge blocks, while the local drive tends to split to smaller ones.

we have tracked this problem for two weeks, when this problem is found, I already use Mapper to check, and it works ok, however, after we test and try a lot of method to test this, We still think it might be the cbfs problem, becuse our internal log works ok, but the procmon have 0xc00000e8 error. I hope you can have a check the source code, and find out in which circumstance it will return such error code.

Thanks a lot
Posted: 04/29/2016 06:18:22
by Eugene Mayevski (Team)

Thank you for clarification. You can use VDisk sample to test the issue as well -- VDisk works with memory so it is much faster. Also you can modify it not to store actual data but return random patterns (or just fill the block with zeros or a specific pattern). It is important that we could reproduce the problem in some way - pursuing the problem based only on logs can be lengthy and resource-wasting approach.

Sincerely yours
Eugene Mayevski
Posted: 04/29/2016 06:29:39
by Volodymyr Zinin (Team)

0xc00000e8 (STATUS_INVALID_USER_BUFFER) can be returned by CBFS. Such situation can occur when the CBFS driver checks data returned from the callbacks and the memory, where the data are located, is invalid. Please recheck your OnRead callback code that the output buffer are not corrupted and the returned data length has the same size as requested.
Posted: 04/29/2016 07:16:00
by Traum Lou (Standard support level)
Joined: 01/28/2014
Posts: 8

Thanks for your suggestion,

I'm trying to use VDisk to reproduce the problem

Since we get the 0xc00000e8, we have considered this problem whether our read function has some kind of problem, but as our internal log shows that the returned data length has the same size as requested

and the possibility that my OnRead callback buffer is corrupted is quite low, because we use iozone to run lots of test to ensure the correctness of the read/write data. furthermore, the OnRead callback does not allocate any data, the operation we do is just like memcpy. one more thing is I forget to say is that, the davinci resolve does not get the 0xc00000e8 error when we play the video immediately, at first several seconds all the tiff file can be read normally, after that, all the tiff file davinci read will get 0xc00000e8 error.

But I want to make sure the output buffer is not corrupted, so I want to ask that, how to judge whether the output data is corrupted. Is there any way or code that you can do this, we will really glad to try.

Thanks a lot.
Posted: 04/29/2016 07:37:20
by Volodymyr Zinin (Team)

I have moved the question to HelpDesk. Let's continue communication there.
Also by EldoS: BizCrypto
Components for BizTalk® and SQL Server® Integration Services that let you securely store and transfer information in your business automation solutions.



Topic viewed 4066 times

Number of guests: 1, registered members: 0, in total hidden: 0


Back to top

As of July 15, 2016 EldoS business operates as a division of /n software, inc. For more information, please read the announcement.

Got it!