-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Saturday 30 June 2001 20:46, Don Sanders wrote: > On Saturday 30 June 2001 19:46, Marc Mutz wrote: > > On Friday 29 June 2001 14:37, Don Sanders wrote: > > > > > > > > > if(mKey.isEmpty() || mKey.left(1) != &req_col) > > > > > { > > > > > > BTW, does applying the fix to the above line you > > > pointed out earlier make any difference? (I thought it > > > would hide the problem). > > > > > > > > Yes, I cannot reproduce the problem now. > > Unfortunately I think this will just hide the problem > rather than fix it. > I'm not so sure anymore. From similar(?) bugs I have fixed recently, I am aware of the fact that this crash may occur on executing the return statement in generate_key. I had this one or two times already: A QString is generated in a subroutine and gets it's implicit copy when the return statement is executed. But I never had it so unstable. It might be related to the fact that the local variables on the stack are being corrupted. This might happen in the != calculation, since it involves the conversion of &req_col to a QString (see operator==(QString,char) source in $QTDIR/src/tools/qstring.cpp). Thus, the constructor will build a QString that runs to the next happen-to-be-there \0. What saves us here normally is the sole fact that always mKey.left(1).length() <= QString(&req_col).length() and thus the first test in operator==(QString,QString) is taken. It might be that in this special case we happen to see the same length (ie. *(&req_col+1) == \0) and thus the last test is taken. But I can't see how this could really corrupt the stack and why it survives until the return from generate_key. But, this stinks like stack corruption. Thus we don't see it when we change the stack (adding function calls before the call to generate_key, leaving out local variables, using another compiler?). [compiler bug] > > Achim, can you confirm this? > > It could also be a compiler bug, it would be nice if Achim > could tell us which compiler he is using (gcc -v) If I knew x86 assmebler, I'd take a look at the output for that function, but I'm only conversant in 68k assembler and that is from a few years back :-( Marc - -- Marc Mutz http://marc.mutz.com/ http://www.mathematik.uni-bielefeld.de/~mmutz/ http://EncryptionHOWTO.sourceforge.net/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE7Plu83oWD+L2/6DgRArlEAJ9t/3Ic2dCX3Nz+yXJBdsLjZQJI7ACfaLpr IgsG4HQaGLpfqrv9klQqjWw= =1Y44 -----END PGP SIGNATURE----- _______________________________________________ Kmail Developers mailing list Kmail@master.kde.org http://master.kde.org/mailman/listinfo/kmail