Issue867

Title let driver ignore external limits
Priority bug Status resolved
Superseder Nosy List jendrik, malte, silvan
Assigned To jendrik Keywords driver
Optional summary

Created on 2018-11-08.19:15:59 by jendrik, last changed by jendrik.

Messages
msg8156 (view) Author: jendrik Date: 2018-12-05.18:03:45
I merged this and announced the change on the development mailing list.
msg8141 (view) Author: jendrik Date: 2018-12-02.15:12:04
I handled your comments.
msg8140 (view) Author: malte Date: 2018-12-02.14:30:20
I left a few more comments.
msg8136 (view) Author: jendrik Date: 2018-11-29.15:37:25
Add TODO in summary field.
msg8134 (view) Author: jendrik Date: 2018-11-29.14:15:52
Thanks! I'm done handling your comments.
msg8131 (view) Author: malte Date: 2018-11-29.10:21:45
I left yet more comments, but they are only local, so we're getting there. :-) I
didn't check the tests, and I didn't think too hard about whether everything
will always work as intended. I suppose if it misbehaves in some way, we will
find out from the tests or from things going wrong in experiments soon enough. :-)

But with this sort of change, I would recommend writing an email to ai@... or
downward-dev@... after it has been merged explaining what was changed and why
and asking people to watch out for any odd behaviour over the next few weeks.
msg8130 (view) Author: jendrik Date: 2018-11-29.08:37:52
I handled your comments and think this is ready for another review.
msg8083 (view) Author: malte Date: 2018-11-13.16:46:49
Left some more comments.
msg8082 (view) Author: jendrik Date: 2018-11-13.12:17:12
Thanks! I took care of your comments.
msg8081 (view) Author: malte Date: 2018-11-12.22:53:48
I left some comments on bitbucket.
msg8080 (view) Author: jendrik Date: 2018-11-09.15:13:59
Taking our off-tracker discussion into account, my understanding is that we want to let the 
driver ignore external limits. The following pull request should do just that and I adjusted the 
issue title accordingly:

https://bitbucket.org/jendrikseipp/downward/pull-requests/107/

If the internal time limit surpasses the external hard limit, it is a failure and the driver 
aborts. 

Working on this I uncovered a subtle bug: the driver captures all stderr output when calling the 
translator, including the preexec function that is used to set the resource limits. If that 
function encounters an error (like trying to raise a hard resource limit), we print the error to 
stderr and exit the driver immediately. Since the stderr output is captured, however, it is 
never shown to the user.

The pull request addresses this in the last commit 
(https://bitbucket.org/jendrikseipp/downward/commits/426a105737dcd56ac8243a2eba06c33d7eb6ba5d). 
If we encounter an error in a child process, we use os._exit() to exit only the child process, 
not the whole interpreter. This requires passing around is_subprocess Booleansin quite a few 
places. If you have a more elegant solution, please let me know.
msg8079 (view) Author: jendrik Date: 2018-11-08.19:15:59
I think we introduced a regression in issue775:

$ ulimit -Sv 102400
$ ./fast-downward.py --translate ../benchmarks/gripper/prob01.pddl

results in 

[...]
INFO     translator time limit: None
INFO     translator memory limit: None
[...]

The change was made in the get_memory_limit() and get_time_limit() functions in 
driver/limits.py in this changeset: http://hg.fast-downward.org/rev/33275c9cc1cf

I think the fix for this issue is to only let these two functions return None 
only if all three limits (component, overall and external) are None.
History
Date User Action Args
2018-12-05 18:03:45jendriksetstatus: reviewing -> resolved
messages: + msg8156
summary: TODO: Write an email to downward-dev@... after this has been merged explaining what was changed and why and ask people to watch out for any odd behaviour over the next few weeks. ->
2018-12-02 15:12:04jendriksetmessages: + msg8141
2018-12-02 14:30:20maltesetmessages: + msg8140
2018-11-29 15:37:25jendriksetmessages: + msg8136
summary: TODO: Write an email to downward-dev@... after this has been merged explaining what was changed and why and ask people to watch out for any odd behaviour over the next few weeks.
2018-11-29 14:15:52jendriksetmessages: + msg8134
2018-11-29 10:21:45maltesetmessages: + msg8131
2018-11-29 08:37:52jendriksetstatus: chatting -> reviewing
messages: + msg8130
2018-11-13 16:46:49maltesetmessages: + msg8083
2018-11-13 12:17:12jendriksetmessages: + msg8082
2018-11-12 22:53:48maltesetmessages: + msg8081
2018-11-09 15:13:59jendriksetstatus: unread -> chatting
assignedto: jendrik
messages: + msg8080
title: driver ignores external limits -> let driver ignore external limits
2018-11-08 19:15:59jendrikcreate