Sparkette Posted September 3, 2014 Report Share Posted September 3, 2014 (edited) Easy to reproduce; just follow these steps: Place an Initialize Array node in the block diagram Make it a large number of dimensions (really anything more than 1 will work, but do more for full effect) Do not connect anything to the Initialize Array, so it remains void Right-click the output terminal, and go to Create->Indicator Look at the index displays on the front panel. When the array indicator is created, it's supposed to set aside memory to store the selected indices for however many dimensions are needed. But apparently, if the type is void, it only sets aside room for one dimension, leaving the additional index displays pointing to addresses that are supposed to be used for other things. I searched for the values that appeared using Cheat Engine, and sure enough, it cuts into a section of memory that looks like it's being used for something else. On a side note, just for fun I changed the values on all the index displays, and one of the index displays changed to show garbage characters. Then when I closed the VI, LabVIEW crashed. So yeah, it looks like a buffer overflow. This is in 2014 btw. Edited September 3, 2014 by flarn2006 1 Quote Link to comment
ShaunR Posted September 3, 2014 Report Share Posted September 3, 2014 Easy to reproduce; just follow these steps: Place an Initialize Array node in the block diagram Make it a large number of dimensions (really anything more than 1 will work, but do more for full effect) Do not connect anything to the Initialize Array, so it remains void Right-click the output terminal, and go to Create->Indicator Look at the index displays on the front panel. When the array indicator is created, it's supposed to set aside memory to store the selected indices for however many dimensions are needed. But apparently, if the type is void, it only sets aside room for one dimension, leaving the additional index displays pointing to addresses that are supposed to be used for other things. I searched for the values that appeared using Cheat Engine, and sure enough, it cuts into a section of memory that looks like it's being used for something else. On a side note, just for fun I changed the values on all the index displays, and one of the index displays changed to show garbage characters. Then when I closed the VI, LabVIEW crashed. So yeah, it looks like a buffer overflow. This is in 2014 btw. Confirmed. Introduced in LV 2013 and doesn't affect LV 64 bit... Quote Link to comment
BramJ Posted September 3, 2014 Report Share Posted September 3, 2014 Hmm, just tried it with the LV versions that I have and I can reproduce it in all versions 7.1.1 8 2010 32bit 2013 32bit 2013 64bit 2014 32bit 2013 64bit Quote Link to comment
Sparkette Posted September 3, 2014 Author Report Share Posted September 3, 2014 It works with a void array constant as well, not just Initialize Array. Quote Link to comment
BramJ Posted September 3, 2014 Report Share Posted September 3, 2014 Changing a void constant with lots of dimensions to control and then back to constant causes a crash for me Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.