I’ve been tracking down an elusive bug which was causing one of my devices to occasionally start mis-behaving. The device would respond slowly (if at all) to some commands, and respond normally to others.
It was pretty obvious what the issue was when I attached the debugger and started single-stepping through the code while it was misbehaving.
I landed on the ‘return’ in this code:
prevLen = sizeof(LIST_ITEM)+32; pWorkItem = malloc(prevLen);
if(pWorkItem == 0) return 0;
so it was obvious I was getting a malloc fail, which meant I had ran out of memory somewhere along the line. The ‘return 0’ meant that the command silently failed, without any feedback to the user.