Which version of sql server are you running (including service pack) ? Which replication are you using ? Look at your sql server logs to see if additional information exists. Are you creating the cursor ?
You will have to cleanup the code on your end. Good programming practice dictates that any cursor created and opened should always be closed and deallocated.
I guess you could try doing a search on the user stored procedures for the name of the cursor and edit the code to add the code deallocating it at the end of the stored procedure. After that, you may want to try removing replication and setting it up again, starting with a snapshot.