https://bugzilla.novell.com/show_bug.cgi?id=813340 https://bugzilla.novell.com/show_bug.cgi?id=813340#c5 --- Comment #5 from Jan Fengler <jan.fengler@adviqo.com> 2013-10-25 09:14:16 UTC --- (In reply to comment #4)
Thnak you for debugging this, I 'll have a look later this week.
I think 3.25 is no longer affected, because the old way with a maximized sendbuffer is implemented again. Using that or the patched older Version results in an assertion error after some time stopping everything ("assert(buf->used == 1)"). Investigating this i found that in the method "capi_processMessage" a call to "capi_return_buffer" resulted in the assertion error, because cleanup_buffers_for_plci already called capi_return_buffer and if that is called again, buf->used is no longer 1. The working Version from openSuSE 10.3 (2007.9.17-5.x64) has nearly the same code and i was not able to find the reason why the behavior is different between the two versions (the older one is working and we use direct calls to capi20.h-Methods). A possible workaround is to check if the buffer is marked as used, before passing it to "capi_return_buffer" like this (from my development version, therefore the debug output: .. } else if ( nSubCommand == CAPI_RESP ) { CapiDebug(1, "capi_processMessage\n"); struct recvbuffer *buf = applinfo[nApplId]->buffers+CAPIMSG_U16( pnMsg, 12 ); if (buf->used) { CapiDebug(1, "capi_processMessage - return_buffer_used\n"); capimsg_setu16( pnMsg, 12, capi_return_buffer( nApplId, CAPIMSG_U16( pnMsg, 12 ) ) ); } else { CapiDebug(1, "capi_processMessage - return_buffer_used skipped!\n"); capimsg_setu16( pnMsg, 12, buf->datahandle); } } .. but to me this seems only as a workaround that handles the symptoms, not the source of the problem, though this workaround avoids triggering the assertion. Does anybody have an idea, where the different behavior is resulting from? -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.