Outputs dont need to be, but anything that is read should be (ie in an if statement or on the RHS of an assignment). So, as far as I can, row_position and C are missing from the sensitivity list (and watch your simulation hit an infinite loop because counters shouldnt be in this process), because you are reading them to update themselves:
row_position <= row_position + 1;
Obviously this only applies to signals. Variables and constants cannot go in a sensitivity list.
In the checking process, even though its commented out (its very bad practice to leave commented code lying around - at least give a comment as to why its been commented out), you are missing D_in, memory_last_row, row_position and changed_chk from the sensitivty list.