Critical errors in CryEngine V code

Published May 15, 2017 by Svyatoslav Razmyslov, posted by PVS-studio team
Do you see issues with this article? Let us know.
Advertisement
In May 2016, German game-development company Crytek made the, decision to upload the source code of their game engine, 'CryEngine V' to GitHub. The project is in active development, which leads to a large number of errors in the code. We have already checked the project with PVS-Studio for Windows, and now we can also analyze it using PVS-Studio for Linux. There was enough material for an article with the description of only crucial errors.
https://www.viva64.com/en/b/0495/
Cancel Save
0 Likes 8 Comments

Comments

EmanuelPM

GeomCacheRenderNode.cpp 285 is actually working as intended, I believe. They have 8 0's on purpose, to store either a 4 byte or 8 byte pointer. Anything larger would clobber the data they are storing farther on in the structure. Using reinterpret_cast would have made it more clear, and be better.

May 12, 2017 06:59 PM
Xai

I really don't see how GameDev.net can allow these posts to continue. I am personally (as nobody other than a long time forum member) calling for a ban on Rasmyslov's account and anything PVS-Studio related after he has continued to post simple click-bait advertisements for his product disguised as "articles" and with misleading headlines that do nothing to announce their true nature. Secondly, this post actively violated the terms of service of Cry Engine V (at least as I read it, although perhaps these snippets are fair use).

Plan an simple a headline about a commercial product (PVS-Studio) should not be allowed to use the name of another commercial product that they have no rights to. If you want to allow him to create a PVS-Studio tag or title his article something like "PVS-Studio analysis results of XYZ" I am perfectly fine with him continuing to "educate" us all on the grand wonder that is his product and the horrible pitfalls that exist in all real codebases. But to allow him to use GameDev to advertise his product in this manner in clear violation of any reasonable concept of propriety, fair use of trademarks, and simple honesty and respect of the reader ... I just cannot stand it any longer.

So my proposal is: Force Rasmyslov to go back and change the title of each and every advertisement he's posted - to be honest and direct, and to use only such titles in the future, or to have all of his articles removed from the site. If you agree with me, please let me, or gamedev or Ramyslov know. If you do not agree, then please also make that known (your opinion on the appropriate conduct on gamedev.net should count either way).

May 15, 2017 03:49 AM
jcabeleira

I agree with @Xai, these articles are clearly created for advertisement and therefore should be identified as such or not allowed at all.

The tone used in these articles is not constructive. It serves little in terms of knowledge sharing and harms the authors of the analysed code in order to advertise a product.

May 16, 2017 04:28 PM
khawk

These are fair criticisms. We felt that there was enough educational value to these, but we understand the concerns. We'll clear these up in the future (tone, sponsorship, etc.).

May 17, 2017 04:35 PM
iedoc
I don't think there is anything useful in this article. Your analyzing a huge codebase, where your going to find a LOT of code that's probably never used so was just never fixed. Most developers see plenty of bugs everyday, we don't need to see a list of bugs found in another codebase.
May 20, 2017 12:19 PM
nhold

I disagree with pretty much everyone here, I find the articles pretty interesting. It's not like he hides who he is or what he is advertising, just ignore any of these types of articles if you don't want them.

May 20, 2017 10:01 PM
AthosVG

I'll give my two cents on this. I don't think I have commented on this series before, but I intend this to be the first and last comment to post in it, as I think this topic has been brought up enough.

The only article in this series I could actually get into, was the collaboration with the guys from Epic Games on improvements to Unreal Engine. If I recall correctly, there was an actual description of workflow as well as how some of the bugs were solved and how they were unsolvable. That, I consider educational and worth reading.

To me, as has been posted before, there is little educational about this. Aside from the intention of the article, which the writing has a clear emphasis towards, I really question myself and the author what the difference is between the article and me using a trial of PVS and viewing the result when ran over Crytek's source code. It is not just the tone of writing, it is not only the conclusion nor only the intent of the article, buying your product, because even if you fix that, I feel like you're not providing almost no content compared to an XML file containing the results of a run of your tool.

If are really trying to put out an effort of creating quality content with these articles, I would focus on what is actually interesting about these errors. Were you able to find what the consequences of this bug were? What was the fix? What side-effects would have such a fix have? That's stretching it, because personally, I'm not so sure whether this starts to make things actually interesting. However, it may provide more interest into why we should find the 'bugs'/'issues' you find interesting. Perhaps there are no consequences at all for all we know, have you verified this whatsoever?

Also, focus on quality, not quantity. We are all aware how common bugs are, you even assume the high amount CryEngine has in your introduction, but we also know that there probably has not been a game shipped to date without bugs nor that they are necessarily interesting in the first place. To the developer, it may be nice to filter out these if/else statements that have equal expressions contained within, but I really couldn't give a damn. I mean, 'fixing' it would still do the same thing, is that really worth an article?

Finally, although this ties into my other comments, are any of these articles any different? The list of errors might be different, although they probably contain plenty of duplicates, but I honestly haven't seen your conclusion state anything different whatsoever.

Feedback perhaps a little harshly put, but I think it's been brought up plenty before. I understand there's people in favor of these articles too and I have occasionally scrolled through the errors as well to look around, of which in rare cases they can be an interesting read. On the other hand, I've also used static code analyzers and to be fair, they really do kind of tell me the same thing as these articles, albeit with a few less words and a little less product advertisement ;). I don't intend to discourage you from posting at all, but I would seriously reconsider the value of these articles. Given your second-last paragraph and the general setup of these articles, you might even want to consider turning these into blog posts or sort-alike thing

May 20, 2017 11:22 PM
swiftcoder

I guess I'm on the opposite side of this - the tone of these articles could perhaps be a little more friendly, but the content is fascinating.

Why is anyone maintaining a major C++ code base without static analysis tools? It would be nigh unthinkable to run a Java project without FindBugs enabled. If you are vending an open-source product, and you aren't running at least, say, CppCheck, or clang-analyser... why should I trust your software?

May 21, 2017 03:32 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!

In May 2016, German game-development company Crytek made the, decision to upload the source code of their game engine, 'CryEngine V' to GitHub. The project is in active development, which leads to a large number of errors in the code. We have already checked the project with PVS-Studio for Windows, and now we can also analyze it using PVS-Studio for Linux. There was enough material for an article with the description of only crucial errors.

Advertisement
Advertisement