Common mistake in Kosaraju: forgetting to reset the visited array between the two DFS passes. If you do not reset, the second pass will not visit any nodes. Common mistake in Tarjan: updating low[v] with disc[u] even when is not on the current stack.
Only update low[v] if is still on the stack (use an array). Debug tip: Trace your algorithm by hand on a small graph (- nodes). Print , , and stack contents at each step. Compare with expected output.