A method of processing a request by a host to access data stored in a memory device, the method comprising: reading data from the memory device in response to the request; applying an iterative decoder to the read data; upon determining that the iterative decoder is oscillating, determining a total number of rows in first data (J 1) the decoder attempted to correct; estimating first visible error rows among the total number that continue to have an error after the attempt; estimating residual error rows among the total number that no longer have an error after the attempt; determining second visible error rows in second data (J 2), which corresponds to permutated first data (J 1), of the decoder that continue to have an error by permuting indices of the residual error rows according to the permutation; determining whether zero or more first hidden error rows are present in the first data (J 1) using the second visible error rows, where each hidden error row corresponds to a valid Hamming codeword with an error which the decoder is not able to detect; correcting the first data (J 1) using the first visible error rows and the determined number of first hidden error rows; and outputting the corrected data to the host, wherein the iterative decoder is configured to decode a generalized low-density parity-check (GLDPC) code based on a Hamming code. reading data from the memory device in response to the request; applying an iterative decoder to the read data; upon determining that the iterative decoder is oscillating, determining a total number of rows in first data (J 1) the decoder attempted to correct; estimating first visible error rows among the total number that continue to have an error after the attempt; estimating residual error rows among the total number that no longer have an error after the attempt; determining second visible error rows in second data (J 2), which corresponds to permutated first data (J 1), of the decoder that continue to have an error by permuting indices of the residual error rows according to the permutation; determining whether zero or more first hidden error rows are present in the first data (J 1) using the second visible error rows, where each hidden error row corresponds to a valid Hamming codeword with an error which the decoder is not able to detect; correcting the first data (J 1) using the first visible error rows and the determined number of first hidden error rows; and outputting the corrected data to the host, wherein the iterative decoder is configured to decode a generalized low-density parity-check (GLDPC) code based on a Hamming code. determining a total number of rows in first data (J 1) the decoder attempted to correct; estimating first visible error rows among the total number that continue to have an error after the attempt; estimating residual error rows among the total number that no longer have an error after the attempt; determining second visible error rows in second data (J 2), which corresponds to permutated first data (J 1), of the decoder that continue to have an error by permuting indices of the residual error rows according to the permutation; determining whether zero or more first hidden error rows are present in the first data (J 1) using the second visible error rows, where each hidden error row corresponds to a valid Hamming codeword with an error which the decoder is not able to detect; correcting the first data (J 1) using the first visible error rows and the determined number of first hidden error rows; and outputting the corrected data to the host, wherein the iterative decoder is configured to decode a generalized low-density parity-check (GLDPC) code based on a Hamming code.