Concurrent modification is a common problem with some thread-using applications, when not properly using locks/syncronization. It may cause errors or exceptions, such as ConcurrentModificationException in Java.
Concurrent modification is an error that may come up at random times in threaded code. For example, consider two functions, to withdraw and add from an account:
public variable dollars
add(amount):
add amount to dollars
sets dollars amount
withdraw(amount):
subtract amount from dollars
sets dollars amount
If this pseudocode example had two threads running, it would be possible to add one to the number (100 to 101 dollars), concurrently dispensing $100 to customer and setting account to 0, then set the account to 101 dollars.
Different languages handle this differently, for example Java has synchronized(object with lock), GTK has gtk_threads_enter/leave for interacting on single thread.