-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test_nproc.opt results on OSX 10.6.8, ocaml 3.12.1, latest godi, 2011-12-30 #1
Comments
I tested on the Mac of a colleague and the programs succeeds, despite printing all these "[err] kill worker" errors that I don't see on Linux. This is its configuration: $ uname -a It would help if you could confirm the bug with a standard installation of OCaml 3.12.1 and Lwt 2.3.1 (the one in Godi) or lwt 2.3.2 (latest). Thanks for your contribution. |
Error 2 is EAGAIN ("Resource temporarily unavailable") obtained as follows:
The Linux man page for fork() says:
Do you think you might have a memory quota or a maximum number of processes? I will try to catch these errors and print better messages but it won't solve your problem. |
You can check for your system limits with "ulimit -a" and the current number of processes with "ps ax | wc -l". |
Bonjour Martin, ma version d'OSX : Darwin air.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386 c'est un mac air 11", le ulimit est rel. bas concernant les processus, mais j'en ai que 76 actifs : philou@air:~/src/ml/nproc-git$ ulimit -a tant mieux si toutes ces exceptions sont "harmless", je vais tester nproc un de ces jours à ce moment là. je verais pour réinstaller un ocaml "genuine" sans le patch gprint, j'avoue avoir la flemme, quoique si il n'y a que lwt comme dépendance... salutations. Le 30 déc. 2011 à 22:58, Martin Jambon a écrit :
|
On 12/30/2011 02:43 PM, Philippe Strauss wrote:
Il est fort possible que ce soit ca. A plusieurs reprises, les tests de Je viens faire une modification qui consiste a reessayer d'appeler
Bon de toute facon, ca m'etonnerait que le patch y soit pour quelque chose. Martin
|
I added a retry loop for the waitpid function, which should take care of reclaiming the child processes. Let me know if it works. |
avec la nouvelle version git cela semble bon ( noter que rhausser la limite du nombre de process n'a rien chang): philou@air:~/src/ml/nproc-git$ sudo sh -c "ulimit -u 640; ulimit -a; ./test_nproc.opt" core file size (blocks, -c) 0 [exception in f] j'attache deux traces dtrace du nombre de syscall passs par les processes test_nproc entre avant le spin loop sur waitpid et maintenant (il est identique, mais je dcouvre dtrace :-)
|
philou@air:~/src/ml/nproc-git$ ./test_nproc.opt
[exception in f]
[err] Exception raised by Nproc task: Failure("raised from f")
[err] kill worker 13151: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13152: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13153: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13154: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13155: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13156: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13157: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13158: Unix.Unix_error(Unix.EINTR, "waitpid", "")
OK
[exception in g]
[err] Error while handling result of Nproc task: exception Failure("raised from g")
[err] kill worker 13159: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13160: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13161: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13162: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13163: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13164: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13165: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13166: Unix.Unix_error(Unix.EINTR, "waitpid", "")
OK
[unstack child]
GC stats in parent:
live_words: 2964451
GC stats in children:
Starting worker 0
Starting worker 1
live_words: 4834
live_words: 4834
live_words: 4834
live_words: 4834
[err] kill worker 13167: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13168: Unix.Unix_error(Unix.EINTR, "waitpid", "")
OK
[lwt interface]
[err] kill worker 13169: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13170: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13171: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13172: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13173: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13174: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13175: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13176: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13177: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13178: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13179: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13180: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13181: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13182: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13183: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13184: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13185: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13186: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13187: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13188: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13189: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13190: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13191: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13192: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13193: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13194: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13195: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13196: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13197: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13198: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13199: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13200: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13201: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13202: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13203: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13204: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13205: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13206: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13207: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13208: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13209: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13210: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13211: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13212: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13213: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13214: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13215: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13216: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13217: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13218: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13219: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13220: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13221: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13222: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13223: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13224: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13225: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13226: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13227: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13228: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13229: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13230: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13231: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13232: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13233: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13234: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13235: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13236: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13237: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13238: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13239: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13241: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13242: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13243: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13244: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13245: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13246: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13247: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13248: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13249: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13250: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13251: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13252: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13253: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13254: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13255: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13256: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13257: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13258: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13259: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13260: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13261: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13262: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13263: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13264: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13265: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13266: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13267: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13268: Unix.Unix_error(Unix.EINTR, "waitpid", "")
OK
[stream interface]
[err] kill worker 13269: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13270: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13271: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13272: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13273: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13274: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13275: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13276: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13277: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13278: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13279: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13280: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13281: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13282: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13283: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13284: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13285: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13286: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13287: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13288: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13289: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13290: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13291: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13292: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13293: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13294: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13295: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13296: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13297: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13298: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13299: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13300: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13301: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13302: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13303: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13304: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13305: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13306: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13307: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13308: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13309: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13310: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13311: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13312: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13313: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13314: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13315: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13316: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13317: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13318: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13319: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13320: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13321: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13322: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13323: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13324: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13325: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13326: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13327: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13328: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13329: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13330: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13331: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13332: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13333: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13334: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13335: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13336: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13337: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13338: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13339: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13340: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13341: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13342: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13343: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13344: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13345: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13346: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13347: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13348: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13349: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13350: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13351: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13352: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13353: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13354: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13355: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13356: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13357: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13358: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13359: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13360: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13361: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13362: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13363: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13364: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13365: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13366: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13367: Unix.Unix_error(Unix.EINTR, "waitpid", "")
[err] kill worker 13368: Unix.Unix_error(Unix.EINTR, "waitpid", "")
total time: 3.190002s
OK
[stream interface with granularity=10]
Fatal error: exception Unix.Unix_error(2, "fork", "")
Duh some unix syscall semantic peculiarities ? :-)
my box is a mac air 11", core2 duo 1.4GHz. I run ocaml with jeremy dimino gprint patch I must confess.
The text was updated successfully, but these errors were encountered: