[ts-gen] MacOS Shim problems

Mike Thornton endoscope at gmail.com
Fri May 22 04:04:39 EDT 2009


Hi all,

I too am seeing lockup with the revisions that Bill suggests -- the lockup
occurs after the shim header/account info is printed.  My entire python
script subscribes to a EUR:USD contract right after connecting in order to
keep data flowing through the linux pipe.  Right after the header info is
printed, an uncommented "d.print_line(t[i - 1], a, b, x);" from "leaf.c"
shows the following data below, and then a few lines of data on the EUR:USD
contract are printed...then lockup occurs.  If I tail the "ShimText" file, I
see that market data is not printing to the log file either.  My entire
python code, as you would expect based on the "ShimText" behavior, does not
progress passed a readline() statement from the stdout pipe.

The odd thing is that a separate python test script I emailed about last
week (and which Paul suggested modifications which fixed the polling
lock-up) does *not* lock-up, but my entire python code (which does not
appear qualitatively different to me, but is too large to mail -- it
includes some other statements for parsing the output, for saving recent
history, etc.) does.  I have included the last stdout prints below from the
lock-up and non-lock-up version if that helps you.  I have included my
sample test python code below which does *not* lock up.  I have been trying
to recreate a simple lock-up test-case based on the python code below, which
*does* lock up, but have not been able to yet...

The lock-up and non-locked up code both print the same statements from the
uncommented line in "leaf.c", suggesting to me that the cause of the lockup
is not at the line in "leaf.c" as Ric suspects.  I would certainly be
willing to poke around the source code, but I am not too familiar with it.
Bill, are there files you would recommend scrutinizing?

--Mike

------------------ output of my python script, which locks-up, just before
lock-up --------------------
line = Pidx: > 25812 51620 CASH  STK, USD JPY, n/a  JP, EUR !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, USD USD, n/a  US, EUR != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, USD USD, n/a  GB, EUR != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, USD USD, n/a  US, EUR !=    DWCF:
29251810
line = Pidx: < 29038 30649 CASH CASH, USD GBP, n/a n/a, EUR !=     CHF:
12087814
line = Pidx: > 29844 30649 CASH  IND, USD USD, n/a n/a, EUR !=  PTJ.IV:
41286944
line = Pidx: > 30247 30649 CASH  IND, USD EUR, n/a  EU, EUR !=    SXTE:
17803627
line = Pidx: > 30449 30649 CASH  IND, USD JPY, n/a  JP, EUR !=     SEL:
40288569
line = Pidx: < 30449 30548 CASH CASH, USD USD, n/a n/a, EUR !=     HKD:
12345795
line = Pidx: > 30499 30548 CASH  IND, USD PLN, n/a n/a, EUR !=     PLN:
16638678
line = Pidx: > 30524 30548 CASH  IND, USD IEP, n/a n/a, EUR !=     IEP:
1247078
line = Pidx: > 30537 30548 CASH  IND, USD ATS, n/a n/a, EUR !=  ATSDEM:
3403701
line = Pidx: > 30543 30548 CASH CASH, USD USD, n/a n/a, EUR !=     CYP:
36763879
line = Pidx: > 30546 30548 CASH CASH, USD USD, n/a n/a, EUR !=     EEK:
36763845
line = Pidx: < 30546 30546 CASH CASH, USD USD, n/a n/a, EUR !=     GBP:
12087797
line = Pidx: = 30546 30546 CASH CASH, USD USD, n/a n/a, EUR ==     EUR:
12087792
line = Pidx: > 25812 51620 CASH  STK, CAD JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, CAD USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, CAD USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, CAD USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: < 29038 30649 CASH CASH, CAD GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: > 29844 30649 CASH  IND, CAD USD, n/a n/a, USD !=  PTJ.IV:
41286944
line = Pidx: > 30247 30649 CASH  IND, CAD EUR, n/a  EU, USD !=    SXTE:
17803627
line = Pidx: > 30449 30649 CASH  IND, CAD JPY, n/a  JP, USD !=     SEL:
40288569
line = Pidx: > 30550 30649 CASH CASH, CAD USD, n/a n/a, USD !=     HKD:
12345795
line = Pidx: > 30600 30649 CASH CASH, CAD EUR, n/a n/a, USD !=     TRY:
41896929
line = Pidx: > 30625 30649 CASH CASH, CAD CAD, n/a n/a, USD !=     NZD:
46189223
line = Pidx: < 30625 30636 CASH CASH, CAD CHF, n/a n/a, USD ==     USD:
12087820
line = Pidx: < 30625 30629 CASH CASH, CAD CHF, n/a n/a, USD !=     HKD:
12345780
line = Pidx: < 30625 30626 CASH CASH, CAD CHF, n/a n/a, USD !=     CAD:
15016234
line = Pidx: = 30625 30626 CASH CASH, CAD CAD, n/a n/a, USD ==     USD:
15016062
line = Pidx: > 25812 51620 CASH  STK, CHF JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, CHF USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, CHF USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, CHF USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: < 29038 30649 CASH CASH, CHF GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: > 29844 30649 CASH  IND, CHF USD, n/a n/a, USD !=  PTJ.IV:
41286944
line = Pidx: > 30247 30649 CASH  IND, CHF EUR, n/a  EU, USD !=    SXTE:
17803627
line = Pidx: > 30449 30649 CASH  IND, CHF JPY, n/a  JP, USD !=     SEL:
40288569
line = Pidx: > 30550 30649 CASH CASH, CHF USD, n/a n/a, USD !=     HKD:
12345795
line = Pidx: > 30600 30649 CASH CASH, CHF EUR, n/a n/a, USD !=     TRY:
41896929
line = Pidx: > 30625 30649 CASH CASH, CHF CAD, n/a n/a, USD !=     NZD:
46189223
line = Pidx: = 30625 30649 CASH CASH, CHF CHF, n/a n/a, USD ==     USD:
12087820
line = Pidx: > 25812 51620 CASH  STK, JPY JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, JPY USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, JPY USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, JPY USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: > 30651 32262 CASH CASH, JPY GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: < 30651 31455 CASH BOND, JPY USD, n/a  CA, USD != 41013MSN1:
29205057
line = Pidx: < 30651 31052 CASH BOND, JPY USD, n/a  CA, USD != 41013M4B3:
29711096
line = Pidx: < 30651 30850 CASH BOND, JPY USD, n/a  BM, USD != 81013RAC9:
29163090
line = Pidx: < 30651 30749 CASH CASH, JPY MXN, n/a n/a, USD !=     EUR:
37890904
line = Pidx: > 30701 30749 CASH CASH, JPY GCU, n/a n/a, USD !=     ZAR:
44984212
line = Pidx: > 30726 30749 CASH CASH, JPY JPY, n/a n/a, USD !=     EUR:
14321016
line = Pidx: < 30726 30736 CASH CASH, JPY KRW, n/a n/a, USD !=     EUR:
36750725
line = Pidx: > 30732 30736 CASH CASH, JPY JPY, n/a n/a, USD !=     NZD:
39453444
line = Pidx: < 30732 30733 CASH CASH, JPY KRW, n/a n/a, USD !=     AUD:
36750719
line = Pidx: > 30733 30733 CASH CASH, JPY JPY, n/a n/a, USD !=     SEK:
37890923
line = Pidx: = 30733 30733 CASH CASH, JPY JPY, n/a n/a, USD ==     USD:
15016059
line = Pidx: > 25812 51620 CASH  STK, SEK JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, SEK USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, SEK USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, SEK USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: > 30651 32262 CASH CASH, SEK GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: < 30651 31455 CASH BOND, SEK USD, n/a  CA, USD != 41013MSN1:
29205057
line = Pidx: < 30651 31052 CASH BOND, SEK USD, n/a  CA, USD != 41013M4B3:
29711096
line = Pidx: < 30651 30850 CASH BOND, SEK USD, n/a  BM, USD != 81013RAC9:
29163090
line = Pidx: > 30751 30850 CASH CASH, SEK MXN, n/a n/a, USD !=     EUR:
37890904
line = Pidx: < 30751 30799 CASH BOND, SEK USD, n/a  AU, USD != 202712AE5:
29223126
line = Pidx: > 30776 30799 CASH CASH, SEK SEK, n/a n/a, USD !=     NOK:
28027113
line = Pidx: < 30776 30786 CASH CASH, SEK TWD, n/a n/a, USD ==     USD:
37928794
line = Pidx: < 30776 30780 CASH CASH, SEK SKK, n/a n/a, USD ==     USD:
34831491
line = Pidx: < 30776 30777 CASH CASH, SEK SGD, n/a n/a, USD ==     USD:
37928772
line = Pidx: = 30776 30777 CASH CASH, SEK SEK, n/a n/a, USD ==     USD:
37893486
line = 7409|61891|   5026552|3| 1| 5|         7|1|  1.3944|15000000|
|price.outcry.bid.   |CASH::EUR:USD:
line = 7409|61891|   5026586|3| 1| 5|         7|2|  1.3945|10000000|
|price.outcry.ask.   |CASH::EUR:USD:
line = 7409|61891|   5026603|3| 2| 5|         7|0|
15000000|0|size.bid.           |CASH::EUR:USD:
line = 7409|61891|   5026616|3| 2| 5|         7|3|
10000000|0|size.ask.           |CASH::EUR:USD:
line = 7409|61891|   5026629|3| 2| 5|         7|8|
0|0|size.volume.        |CASH::EUR:USD:
line = 7409|61891|   5026652|3| 1| 5|         7|6|       0|       0|
|price.summary.high. |CASH::EUR:USD:
line = 7409|61891|   5026674|3| 1| 5|         7|7|       0|       0|
|price.summary.low.  |CASH::EUR:USD:
line = 7409|61891|   5026691|3| 1| 5|         7|9| 1.39055|       0|
|price.summary.close.|CASH::EUR:USD:
line = 7409|61891|   5026700|4|103| 0|# |4|103|0|read|
----------------------- end lockup output ---------------

------------------- output from script which does *not*
lockup-------------------
line = Pidx: > 25812 51620 CASH  STK, USD JPY, n/a  JP, EUR !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, USD USD, n/a  US, EUR != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, USD USD, n/a  GB, EUR != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, USD USD, n/a  US, EUR !=    DWCF:
29251810
line = Pidx: < 29038 30649 CASH CASH, USD GBP, n/a n/a, EUR !=     CHF:
12087814
line = Pidx: > 29844 30649 CASH  IND, USD USD, n/a n/a, EUR !=  PTJ.IV:
41286944
line = Pidx: > 30247 30649 CASH  IND, USD EUR, n/a  EU, EUR !=    SXTE:
17803627
line = Pidx: > 30449 30649 CASH  IND, USD JPY, n/a  JP, EUR !=     SEL:
40288569
line = Pidx: < 30449 30548 CASH CASH, USD USD, n/a n/a, EUR !=     HKD:
12345795
line = Pidx: > 30499 30548 CASH  IND, USD PLN, n/a n/a, EUR !=     PLN:
16638678
line = Pidx: > 30524 30548 CASH  IND, USD IEP, n/a n/a, EUR !=     IEP:
1247078
line = Pidx: > 30537 30548 CASH  IND, USD ATS, n/a n/a, EUR !=  ATSDEM:
3403701
line = Pidx: > 30543 30548 CASH CASH, USD USD, n/a n/a, EUR !=     CYP:
36763879
line = Pidx: > 30546 30548 CASH CASH, USD USD, n/a n/a, EUR !=     EEK:
36763845
line = Pidx: < 30546 30546 CASH CASH, USD USD, n/a n/a, EUR !=     GBP:
12087797
line = Pidx: = 30546 30546 CASH CASH, USD USD, n/a n/a, EUR ==     EUR:
12087792
line = Pidx: > 25812 51620 CASH  STK, CAD JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, CAD USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, CAD USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, CAD USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: < 29038 30649 CASH CASH, CAD GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: > 29844 30649 CASH  IND, CAD USD, n/a n/a, USD !=  PTJ.IV:
41286944
line = Pidx: > 30247 30649 CASH  IND, CAD EUR, n/a  EU, USD !=    SXTE:
17803627
line = Pidx: > 30449 30649 CASH  IND, CAD JPY, n/a  JP, USD !=     SEL:
40288569
line = Pidx: > 30550 30649 CASH CASH, CAD USD, n/a n/a, USD !=     HKD:
12345795
line = Pidx: > 30600 30649 CASH CASH, CAD EUR, n/a n/a, USD !=     TRY:
41896929
line = Pidx: > 30625 30649 CASH CASH, CAD CAD, n/a n/a, USD !=     NZD:
46189223
line = Pidx: < 30625 30636 CASH CASH, CAD CHF, n/a n/a, USD ==     USD:
12087820
line = Pidx: < 30625 30629 CASH CASH, CAD CHF, n/a n/a, USD !=     HKD:
12345780
line = Pidx: < 30625 30626 CASH CASH, CAD CHF, n/a n/a, USD !=     CAD:
15016234
line = Pidx: = 30625 30626 CASH CASH, CAD CAD, n/a n/a, USD ==     USD:
15016062
line = Pidx: > 25812 51620 CASH  STK, CHF JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, CHF USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, CHF USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, CHF USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: < 29038 30649 CASH CASH, CHF GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: > 29844 30649 CASH  IND, CHF USD, n/a n/a, USD !=  PTJ.IV:
41286944
line = Pidx: > 30247 30649 CASH  IND, CHF EUR, n/a  EU, USD !=    SXTE:
17803627
line = Pidx: > 30449 30649 CASH  IND, CHF JPY, n/a  JP, USD !=     SEL:
40288569
line = Pidx: > 30550 30649 CASH CASH, CHF USD, n/a n/a, USD !=     HKD:
12345795
line = Pidx: > 30600 30649 CASH CASH, CHF EUR, n/a n/a, USD !=     TRY:
41896929
line = Pidx: > 30625 30649 CASH CASH, CHF CAD, n/a n/a, USD !=     NZD:
46189223
line = Pidx: = 30625 30649 CASH CASH, CHF CHF, n/a n/a, USD ==     USD:
12087820
line = Pidx: > 25812 51620 CASH  STK, JPY JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, JPY USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, JPY USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, JPY USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: > 30651 32262 CASH CASH, JPY GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: < 30651 31455 CASH BOND, JPY USD, n/a  CA, USD != 41013MSN1:
29205057
line = Pidx: < 30651 31052 CASH BOND, JPY USD, n/a  CA, USD != 41013M4B3:
29711096
line = Pidx: < 30651 30850 CASH BOND, JPY USD, n/a  BM, USD != 81013RAC9:
29163090
line = Pidx: < 30651 30749 CASH CASH, JPY MXN, n/a n/a, USD !=     EUR:
37890904
line = Pidx: > 30701 30749 CASH CASH, JPY GCU, n/a n/a, USD !=     ZAR:
44984212
line = Pidx: > 30726 30749 CASH CASH, JPY JPY, n/a n/a, USD !=     EUR:
14321016
line = Pidx: < 30726 30736 CASH CASH, JPY KRW, n/a n/a, USD !=     EUR:
36750725
line = Pidx: > 30732 30736 CASH CASH, JPY JPY, n/a n/a, USD !=     NZD:
39453444
line = Pidx: < 30732 30733 CASH CASH, JPY KRW, n/a n/a, USD !=     AUD:
36750719
line = Pidx: > 30733 30733 CASH CASH, JPY JPY, n/a n/a, USD !=     SEK:
37890923
line = Pidx: = 30733 30733 CASH CASH, JPY JPY, n/a n/a, USD ==     USD:
15016059
line = Pidx: > 25812 51620 CASH  STK, SEK JPY, n/a  JP, USD !=    6155:
38980125
line = Pidx: < 25812 38715 CASH BOND, SEK USD, n/a  US, USD != 37042GXG6:
29203158
line = Pidx: < 25812 32262 CASH BOND, SEK USD, n/a  GB, USD != 44181EA57:
29153511
line = Pidx: > 29038 32262 CASH  IND, SEK USD, n/a  US, USD !=    DWCF:
29251810
line = Pidx: > 30651 32262 CASH CASH, SEK GBP, n/a n/a, USD !=     CHF:
12087814
line = Pidx: < 30651 31455 CASH BOND, SEK USD, n/a  CA, USD != 41013MSN1:
29205057
line = Pidx: < 30651 31052 CASH BOND, SEK USD, n/a  CA, USD != 41013M4B3:
29711096
line = Pidx: < 30651 30850 CASH BOND, SEK USD, n/a  BM, USD != 81013RAC9:
29163090
line = Pidx: > 30751 30850 CASH CASH, SEK MXN, n/a n/a, USD !=     EUR:
37890904
line = Pidx: < 30751 30799 CASH BOND, SEK USD, n/a  AU, USD != 202712AE5:
29223126
line = Pidx: > 30776 30799 CASH CASH, SEK SEK, n/a n/a, USD !=     NOK:
28027113
line = Pidx: < 30776 30786 CASH CASH, SEK TWD, n/a n/a, USD ==     USD:
37928794
line = Pidx: < 30776 30780 CASH CASH, SEK SKK, n/a n/a, USD ==     USD:
34831491
line = Pidx: < 30776 30777 CASH CASH, SEK SGD, n/a n/a, USD ==     USD:
37928772
line = Pidx: = 30776 30777 CASH CASH, SEK SEK, n/a n/a, USD ==     USD:
37893486
line = 7486|63328|   4435517|3| 1| 5|         7|1| 1.39395| 9000000|
|price.outcry.bid.   |CASH::EUR:USD:
line = 7486|63328|   4435549|3| 1| 5|         7|2|  1.3941|20000000|
|price.outcry.ask.   |CASH::EUR:USD:
line = 7486|63328|   4435565|3| 2| 5|         7|0|
9000000|0|size.bid.           |CASH::EUR:USD:
line = 7486|63328|   4435578|3| 2| 5|         7|3|
20000000|0|size.ask.           |CASH::EUR:USD:
line = 7486|63328|   4435590|3| 2| 5|         7|8|
0|0|size.volume.        |CASH::EUR:USD:
line = 7486|63328|   4435606|3| 1| 5|         7|6|       0|       0|
|price.summary.high. |CASH::EUR:USD:
line = 7486|63328|   4435625|3| 1| 5|         7|7|       0|       0|
|price.summary.low.  |CASH::EUR:USD:
line = 7486|63328|   4435642|3| 1| 5|         7|9| 1.39055|       0|
|price.summary.close.|CASH::EUR:USD:
line = 7486|63328|   4435650|4|103| 0|# |4|103|0|read|
line = 7486|63328|   4475127|3| 2| 5|         7|0|
2000000|0|size.bid.           |CASH::EUR:USD:
line = 7486|63328|   4475144|3| 2| 5|         7|3|
22000000|0|size.ask.           |CASH::EUR:USD:
line = 7486|63328|   4475152|4|103| 0|# |4|103|0|read|
line = 7486|63329|   5374145|3| 1| 5|         7|1|   1.394| 5000000|
|price.outcry.bid.   |CASH::EUR:USD:
line = 7486|63329|   5374164|3| 2| 5|         7|0|
5000000|0|size.bid.           |CASH::EUR:USD:
line = 7486|63329|   5374171|4|103| 0|# |4|103|0|read|
line = 7486|63329|   6171391|3| 2| 5|         7|0|
13000000|0|size.bid.           |CASH::EUR:USD:
line = 7486|63329|   6171408|3| 2| 5|         7|3|
20000000|0|size.ask.           |CASH::EUR:USD:
line = 7486|63329|   6171416|4|103| 0|# |4|103|0|read|
line = 7486|63330|   6372825|3| 1| 5|         7|1| 1.39395| 9000000|
|price.outcry.bid.   |CASH::EUR:USD:
line = 7486|63330|   6372853|3| 1| 5|         7|2| 1.39405| 2000000|
|price.outcry.ask.   |CASH::EUR:USD:
line = 7486|63330|   6372870|3| 2| 5|         7|0|
9000000|0|size.bid.           |CASH::EUR:USD:
line = 7486|63330|   6372883|3| 2| 5|         7|3|
2000000|0|size.ask.           |CASH::EUR:USD:



------------- python code which does *not* lock-up for me
----------------------------
import subprocess
import select
import time

if __name__ == '__main__':
    shimProcess = subprocess.Popen('/usr/local/shim/shim --risk cout file
save', bufsize=1, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
    orderSubmitted = False
    while True:
        select.select([shimProcess.stdout],[],[])
        line = shimProcess.stdout.readline().strip()
        if (len(line) > 0) and not orderSubmitted:
            shimProcess.stdin.write("select tick CASH:IDEALPRO:EUR:USD
1;\n")
            shimProcess.stdin.flush()
            orderSubmitted = True
        print "line = %s" % line
---------------------- end python code----------------------------

On Thu, May 21, 2009 at 10:07 PM, Richard Pruss <boadie at gmail.com> wrote:

> Tried the patches, still seems to lock in leaf.c the modified print line
> works;
> here is the output:
>
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
> Pidx: < 30449 30649 CASH CASH, USD USD, n/a n/a, AUD !=     HKD: 12345795
>
> Sorry,
> Ric
>
> On Fri, May 22, 2009 at 9:14 AM, Bill Pippin <pippin at owlriver.net> wrote:
> >> Ric,
> >
> > Here I need to reply to my previous post, as the fix I posted was
> > flawed in two ways:  the fix is still incorrect for some cases; and
> > there are related problems elsewhere in the code.
> >
> > Below is a comprehensive patch, to be applied to the original code, so
> > that you need to start *without* having applied my previous patch for
> > leaf.c; if you have, you'll need to either back it out, or start from
> > another copy of the sources you've derived from the shim-090428.tgz
> > tarball.
> >
> > The patch follows my sig.  If any one is interested in the details of
> > the implementation, please feel free to ask on the list, and I'll
> > post an explanation of the patch.
> >
> > In any case, Ric, please consider applying the patch below to your
> > code as noted above, or else wait for the next release, and once having
> > done one or the other, please let us know whether your installation of
> > the shim works.
> >
> > Thanks,
> >
> > Bill
> >
> > -------- cut here ------------------------------------------------------
> >
> > *** old/leaf.c  Thu May  7 19:34:16 2009
> > --- src/leaf.c  Thu May 21 18:51:01 2009
> > ***************
> > *** 167,174 ****
> >  Product_1 t(vecs.product);
> >     Prod_0 p(0);
> >      int   x(0);
> > !     nat   a(t.base()),
> > !           b(t.next());
> >
> >  //  fprintf(stderr, "Desc: %13s %-4s %4s %4s %3s %4s\n", "",
> >  //                  d.type  .text(),
> > --- 167,174 ----
> >  Product_1 t(vecs.product);
> >     Prod_0 p(0);
> >      int   x(0);
> > !     nat   a(t.base() + 1),
> > !           b(t.size());
> >
> >  //  fprintf(stderr, "Desc: %13s %-4s %4s %4s %3s %4s\n", "",
> >  //                  d.type  .text(),
> > ***************
> > *** 177,189 ****
> >  //                  d.unit  .text(),
> >  //                  d.region.text());
> >
> > !     for(nat i(mid(a, b)); a<b && !p; i = mid(a, b)) {
> > !         switch((x = d.compare(t[i]))) {
> > !             case -1: b = i    ; break;
> >              case  1: a = i + 1; break;
> > !             case  0: p = &t[i];
> >          }
> > ! //      d.print_line(t[i], a, b, x);
> >      }
> >  //  fprintf(stderr, "Desc? %u\n", bool(p));
> >
> > --- 177,189 ----
> >  //                  d.unit  .text(),
> >  //                  d.region.text());
> >
> > !     for(nat i(mid(a, b)); a<=i && i<=b && !p; i = mid(a, b)) {
> > !         switch((x = d.compare(t[i - 1]))) {
> > !             case -1: b = i - 1; break;
> >              case  1: a = i + 1; break;
> > !             case  0: p = &t[i - 1];
> >          }
> > ! //      d.print_line(t[i - 1], a, b, x);
> >      }
> >  //  fprintf(stderr, "Desc? %u\n", bool(p));
> >
> > *** old/table.h Wed Mar 11 10:42:42 2009
> > --- lib/table.h Thu May 21 18:03:45 2009
> > ***************
> > *** 167,179 ****
> >          T_0           operator[](char_0 k) const { return
> self[ids[k].id()];  }
> >          T_0           operator[](nat key)  const
> >          {
> > !         nat a(h.base()),
> >              b(h.past()), i(Sentinel);
> >
> > !             for(nat m(mid(a, b)); a<b && sentinel(i); m = mid(a, b)) {
> > !                 if (key < *data[m]()) b = m    ; else
> > !                 if (key > *data[m]()) a = m + 1; else i = m;
> > !             }
> >
> >              return sentinel(i) ? 0 : &data[i]();
> >          }
> > --- 167,179 ----
> >          T_0           operator[](char_0 k) const { return
> self[ids[k].id()];  }
> >          T_0           operator[](nat key)  const
> >          {
> > !         nat a(h.base() + 1),
> >              b(h.past()), i(Sentinel);
> >
> > !             for(nat m(mid(a, b)); a<=m && m<=b && sentinel(i); m=mid(a,
> b))
> > !                 if (key < *data[m - 1]()) b = m - 1; else
> > !                 if (key > *data[m - 1]()) a = m + 1; else
> > !                             i = m - 1;
> >
> >              return sentinel(i) ? 0 : &data[i]();
> >          }
> > *** old/search.h        Wed Mar 11 10:42:42 2009
> > --- lib/search.h        Thu May 21 19:09:49 2009
> > ***************
> > *** 42,62 ****
> >          size(n),
> >           key(**k) {}
> >
> > !         R_0 operator*() const
> > !         {
> > !         R_0 p(0);
> > !         nat a(0), b(size);
> > !
> > !             for(nat i(mid_point(a, b)); a<b && !p; i = mid_point(a, b))
> > !                 if (key.id() < (***data[i]).id()) b = i    ; else
> > !                 if (key.id() > (***data[i]).id()) a = i + 1; else p =
> data[i];
> > !
> > !             return p;
> > !         }
> >
> >  private:
> >
> > !         nat mid_point(nat a, nat b) const { return (a + b) >> 1; }
> >
> >             R_00 data;
> >           nat    size;
> > --- 42,63 ----
> >          size(n),
> >           key(**k) {}
> >
> > !     R_0 operator*() const
> > !     {
> > !     R_0 p(0);
> > !     nat a(1), b(size);        /* half open interval, offset by 1 from
> common case */
> > !
> > !         if (size)
> > !             for(nat i(mid(a, b)); a<=i && i<=b && !p; i = mid(a, b))
> > !                 if (key.id() < (***data[i-1]).id()) b = i - 1; else
> > !                 if (key.id() > (***data[i-1]).id()) a = i + 1; else
> > !                                p = data[i-1];
> > !         return p;
> > !     }
> >
> >  private:
> >
> > !         nat mid(nat a, nat b) const { return (a + b) >> 1; }
> >
> >             R_00 data;
> >           nat    size;
> >
>
> _______________________________________________
> ts-general mailing list
> ts-general at trading-shim.org
> http://www.trading-shim.org/mailman/listinfo/ts-general
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.trading-shim.org/pipermail/ts-general/attachments/20090522/d46de07a/attachment-0001.html 


More information about the ts-general mailing list