<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <font face="Georgia">I've come to understand a bit about why the VM
      was crashing when making requests via SqueakSSL. For some sites I
      could make request after request with no ill effects. A successful
      request/response looks like this:<br>
      <br>
      Mar 30 14:05:47 *user*: sqEncryptSSL: Encrypting 91 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLWrite: Writing 117 bytes, having
      191 free === the encrypted request to be sent<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 2896 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 2896 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 5 bytes, having
      2896 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 13168 bytes,
      having 2891 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 2896 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 2896 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 10277 bytes,
      having 2896 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 1448 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 1448 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 7381 bytes,
      having 1448 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 5933 bytes,
      having 4096 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 3144 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 3144 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 1837 bytes,
      having 3144 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 1307 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 1307 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 1307 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 5 bytes, having
      1307 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 7488 bytes,
      having 1302 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 0 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 6186 bytes,
      having 0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 2896 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 2896 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 6186 bytes,
      having 2896 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 3290 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 3290 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 3290 bytes,
      having 3290 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 0 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 5 bytes, having
      0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 14:05:47 *user*: sqDecryptSSL: Decrypting 0 bytes<br>
      Mar 30 14:05:47 *user*: SqueakSSLRead: Requesting 5 bytes, having
      0 bytes<br>
      and this can repeat many times as request after request succeeds.<br>
      <br>
      Other sites would crash the vm after a small number of requests.
      With the insertion of enough "String new" calls in the right
      place, the crash could almost be guaranteed to occur on the first
      attempt. A failure looks like this:<br>
      <br>
      Mar 30 13:54:36 *user* sqEncryptSSL: Encrypting 80 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLWrite: Writing 105 bytes, having
      180 free === making our encrypted request<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 1452 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1452 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1452 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1447 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 0 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having 0
      bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 4091 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2644 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2644 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2639 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1192 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1192 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1187 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 260 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3836 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3836 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3831 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2384 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2384 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2379 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 932 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      932 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 927 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 520 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3576 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3576 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3571 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2124 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2124 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2119 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 672 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      672 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 667 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 780 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3316 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3316 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3311 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1864 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1864 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1859 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 412 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      412 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 407 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1040 bytes,
      having 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3056 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3056 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3051 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1604 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1604 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1599 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 152 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      152 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 147 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1300 bytes,
      having 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2796 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2796 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2791 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1344 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1344 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1339 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 108 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3988 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3988 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3983 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2536 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2536 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2531 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1084 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1084 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1079 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 368 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3728 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3728 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3723 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2276 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2276 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2271 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 824 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      824 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 819 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 628 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3468 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3468 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3463 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2016 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2016 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2011 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 564 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      564 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 559 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 888 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3208 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3208 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3203 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1756 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1756 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1751 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 304 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      304 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 299 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1148 bytes,
      having 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2948 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2948 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2943 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1496 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1496 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1491 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 44 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      44 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 39 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1408 bytes,
      having 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2688 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2688 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2683 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1236 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1236 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1231 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 216 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3880 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3880 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3875 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2428 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2428 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2423 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 976 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      976 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 971 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 476 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3620 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3620 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3615 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2168 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2168 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2163 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 716 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      716 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 711 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 736 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3360 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3360 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3355 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1908 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1908 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1903 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 456 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      456 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 451 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 996 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3100 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3100 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3095 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1648 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1648 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1643 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 196 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      196 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 191 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1256 bytes,
      having 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2840 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2840 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2835 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1388 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1388 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1383 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 64 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4032 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      4032 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 4027 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2580 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2580 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2575 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1128 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1128 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1123 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 324 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3772 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3772 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3767 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2320 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2320 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2315 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 868 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      868 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 863 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 584 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3512 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3512 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3507 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2060 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2060 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2055 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 608 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      608 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 603 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 4096 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 844 bytes, having
      4096 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3252 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      3252 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 3247 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1800 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1800 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 1795 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 348 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      348 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 343 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 3679 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 3679 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1104 bytes,
      having 3679 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 2575 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      2575 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1447 bytes,
      having 2570 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 1123 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      1123 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 1091 bytes,
      having 1118 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Input data 0 bytes<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: Decrypting 27 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 5 bytes, having
      27 bytes<br>
      Mar 30 13:54:36 *user* SqueakSSLRead: Requesting 22 bytes, having
      22 bytes<br>
      <br>
      data all received now, but what's this:<br>
      <br>
      Mar 30 13:54:36 *user* SqueakSSLWrite: Writing 27 bytes, having 75
      free<br>
      Mar 30 13:54:36 *user* sqDecryptSSL: SSLRead returned -9805<br>
      Mar 30 13:54:36 *user* last object overwritten<br>
      <br>
      errSSLClosedGraceful&nbsp;&nbsp;&nbsp; &nbsp;-9805&nbsp;&nbsp;&nbsp; <br>
      The connection closed gracefully.<br>
      Available in OS X v10.2 and later.<br>
      <br>
      this is the only SqueakSSLWrite: not immediately following a
      sqEncryptSSL, so where did it come from? I don't know, but I do
      know it's using the same buffer provided in the last sqEncryptSSL
      call. The problem is that this buffer was a method temp and may
      well have moved or been gc'd in the interim. My hack was to make
      the buffer used by encrypt and connect a permanent one to minimize
      the chance of movement. Just to verify, I zeroed this buffer once
      the request had been sent and checked it after the response had
      been received. This is what it looked like:<br>
      <br>
      #[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 0 0 0 21 3 1 0 22 183 80 173 250 155 255 108 25 132 220 40
      109 216 134 178 73 243 155 35 75 231 89 0 0 0...<br>
      &nbsp;&nbsp;&nbsp; <br>
      the 27 bytes indicated in the squeakssl log output were inserted
      in this buffer at the next output position. Not sure why this
      extra write happens where it does or if it happens in other OS
      configurations, so the real fix is still a mystery. I think I can
      live with the global buffer for my purposes.<br>
      <br>
      <br>
      Cheers,<br>
      Bob<br>
      <br>
    </font>
    <div class="moz-cite-prefix">On 3/28/14 1:40 PM, Eliot Miranda
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAC20JE1Qy73Pe=s2S1X67cmJxtzds1QB5J1JxbPUK3eB5mwRFA@mail.gmail.com"
      type="cite">
      <pre wrap=""> </pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <div dir="ltr"><br>
        <div class="gmail_extra"><br>
          <br>
          <div class="gmail_quote">On Fri, Mar 28, 2014 at 8:17 AM, Bob
            Arning <span dir="ltr">&lt;<a moz-do-not-send="true"
                href="mailto:arning315@comcast.net" target="_blank">arning315@comcast.net</a>&gt;</span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">&nbsp;<br>
              <div text="#000000" bgcolor="#FFFFFF"> <font
                  face="Georgia">Eliot,<br>
                  <br>
                  I figured out where the "console" ends up and you are
                  right - is was last object overwritten. File attached
                  if it's of any use. My testing has proceeded to the
                  point that repeated calls to "SqueakSSL google:
                  'squeak'" work fine, but calls to a very similar
                  method connecting to a different host will crash the
                  vm after a few iterations.<br>
                </font></div>
            </blockquote>
            <div><br>
            </div>
            <div>At this point I would switch to gdb, set a breakpoint
              in error, run the reproducible case, then use</div>
            <div><br>
            </div>
            <div>call printOop(objectBefore(freeStart))</div>
            <div><br>
            </div>
            <div>to find out which object was overwritten. &nbsp;That may be
              a good enough clue to find out where the overwriting is
              occurring. &nbsp;You can try</div>
            <div><br>
            </div>
            <div>call longPrintOop(objectBefore(freeStart))<br>
            </div>
            <div><br>
            </div>
            <div>which may give you more info.</div>
            <div><br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"><font face="Georgia">
                  <br>
                  Cheers,<br>
                  Bob<br>
                  <br>
                  <br>
                </font>
                <div>On 3/27/14 1:03 PM, Eliot Miranda wrote:<br>
                </div>
                <blockquote type="cite">
                  <pre> </pre>
                  <br>
                  <fieldset></fieldset>
                  <br>
                  <div dir="ltr">Hi Bob,
                    <div class="gmail_extra"><br>
                      <br>
                      <div class="gmail_quote">On Thu, Mar 27, 2014 at
                        4:33 AM, Bob Arning <span dir="ltr">&lt;<a
                            moz-do-not-send="true"
                            href="mailto:arning315@comcast.net"
                            target="_blank">arning315@comcast.net</a>&gt;</span>
                        wrote:<br>
                        <blockquote class="gmail_quote"
                          style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">&nbsp;<br>
                          <div text="#000000" bgcolor="#FFFFFF"> <font
                              face="Georgia">Is there enough information
                              in the attached file to point to a
                              possible cause?<br>
                            </font></div>
                        </blockquote>
                        <div><br>
                        </div>
                        <div>Yes. &nbsp;But there should hopefully be the
                          output of error on the console and that would
                          disambiguate between the two possible causes.
                          &nbsp;This is the stack:</div>
                        <div><br>
                        </div>
                        <span>2&nbsp;&nbsp; libsystem_c.dylib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                          0x9b609bdd abort + 167</span><br>
                        <span>3&nbsp;&nbsp; org.squeak.SqueakAllInOne45&nbsp;&nbsp;
                          0x000703be error + 94</span><br>
                        <span>4&nbsp;&nbsp; org.squeak.SqueakAllInOne45&nbsp;&nbsp;
                          0x000d1c4f eeInstantiateSmallClasssizeInBytes
                          + 95</span><br>
                        <span>5&nbsp;&nbsp; org.squeak.SqueakAllInOne45&nbsp;&nbsp;
                          0x000d31a0
                          createClosureNumArgsnumCopiedstartpc + 80</span><br>
                        <span>6&nbsp;&nbsp; org.squeak.SqueakAllInOne45&nbsp;&nbsp;
                          0x000c6e69 ceClosureCopyDescriptor + 41</span><br>
                        <div>&nbsp;</div>
                        <div>There are two possible errors
                          in&nbsp;eeInstantiateSmallClasssizeInBytes</div>
                        <div>error("last object overwritten");<br>
                        </div>
                        <div>error("out of memory");<br>
                        </div>
                        <div><br>
                        </div>
                        <div><br>
                        </div>
                        <div>The first means that something wrote past
                          the end of an object and this was detected
                          when a new object was allocated, seeing that
                          freeSpace did not contain the pattern
                          expected. &nbsp;This e.g. happens when passing
                          buffer objects to foreign code which writes
                          beyond the object.</div>
                        <div><br>
                        </div>
                        <div>The second usually means infinite
                          recursion. &nbsp;Looking at the memory map at the
                          end of the error report I think that the error
                          is last object overwritten.</div>
                        <div><br>
                        </div>
                        <blockquote class="gmail_quote"
                          style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                          <div text="#000000" bgcolor="#FFFFFF"><font
                              face="Georgia"> <br>
                              Cheers,<br>
                              Bob<br>
                            </font> </div>
                          <br>
                        </blockquote>
                      </div>
                      <br>
                      <br clear="all">
                      <div><br>
                      </div>
                      -- <br>
                      best,
                      <div>Eliot</div>
                    </div>
                  </div>
                </blockquote>
                <br>
              </div>
              <br>
            </blockquote>
          </div>
          <br>
          <br clear="all">
          <div><br>
          </div>
          -- <br>
          best,
          <div>Eliot</div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>