From: SourceForge.net <no...@so...> - 2010-09-15 20:11:34
|
Bugs item #3067098, was opened at 2010-09-15 22:11 Message generated for change (Tracker Item Submitted) made by crategus You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Dieter Kaiser (crategus) Assigned to: Nobody/Anonymous (nobody) Summary: The command timer for a Lisp function Initial Comment: If we would like to collect timing statistics for a Lisp function and then call kill(all) the Lisp function is gone away: First we do it for a Maxima user function: (%i2) timer(?$rectform); (%o2) [rectform] (%i3) kill(all)$ (%i1) rectform(x); (%o1) x Now for a Lisp function: (%i2) timer(?trisplit); (%o2) [?trisplit] (%i3) kill(all)$ (%i1) rectform(x); Maxima encountered a Lisp error: The function TRISPLIT is undefined. Automatically continuing. To enable the Lisp debugger set *debugger-hook* to nil. I think this is a very old bug, I can reproduce it since Maxima 5.9. timer might be not suitable for a Lisp function, but then the function should not accept a Lisp function as an argument. Dieter Kaiser ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 |
From: SourceForge.net <no...@so...> - 2010-10-06 11:23:02
|
Bugs item #3067098, was opened at 2010-09-15 16:11 Message generated for change (Comment added) made by rtoy You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Dieter Kaiser (crategus) Assigned to: Nobody/Anonymous (nobody) Summary: The command timer for a Lisp function Initial Comment: If we would like to collect timing statistics for a Lisp function and then call kill(all) the Lisp function is gone away: First we do it for a Maxima user function: (%i2) timer(?$rectform); (%o2) [rectform] (%i3) kill(all)$ (%i1) rectform(x); (%o1) x Now for a Lisp function: (%i2) timer(?trisplit); (%o2) [?trisplit] (%i3) kill(all)$ (%i1) rectform(x); Maxima encountered a Lisp error: The function TRISPLIT is undefined. Automatically continuing. To enable the Lisp debugger set *debugger-hook* to nil. I think this is a very old bug, I can reproduce it since Maxima 5.9. timer might be not suitable for a Lisp function, but then the function should not accept a Lisp function as an argument. Dieter Kaiser ---------------------------------------------------------------------- >Comment By: Raymond Toy (rtoy) Date: 2010-10-06 07:23 Message: I took a look at this. The routine that is supposed to remove the timer info is trace-unfshadow in mtrace.lisp. I don't understand why this is causing problems. The key part is: (let ((oldf (trace-oldfun fun))) (if (not (null oldf)) (setf (symbol-function fun) oldf) (fmakunbound fun)))) So, the timer version of trisplit is supposed to be replaced with the original trisplit function. But it's not. It's as if fmakunbound were called instead of the setf. But oldf is the original function. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 |
From: SourceForge.net <no...@so...> - 2010-10-07 12:23:59
|
Bugs item #3067098, was opened at 2010-09-15 16:11 Message generated for change (Comment added) made by rtoy You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Dieter Kaiser (crategus) Assigned to: Nobody/Anonymous (nobody) Summary: The command timer for a Lisp function Initial Comment: If we would like to collect timing statistics for a Lisp function and then call kill(all) the Lisp function is gone away: First we do it for a Maxima user function: (%i2) timer(?$rectform); (%o2) [rectform] (%i3) kill(all)$ (%i1) rectform(x); (%o1) x Now for a Lisp function: (%i2) timer(?trisplit); (%o2) [?trisplit] (%i3) kill(all)$ (%i1) rectform(x); Maxima encountered a Lisp error: The function TRISPLIT is undefined. Automatically continuing. To enable the Lisp debugger set *debugger-hook* to nil. I think this is a very old bug, I can reproduce it since Maxima 5.9. timer might be not suitable for a Lisp function, but then the function should not accept a Lisp function as an argument. Dieter Kaiser ---------------------------------------------------------------------- >Comment By: Raymond Toy (rtoy) Date: 2010-10-07 08:23 Message: FWIW, I tried a few more lisp functions like %coerce-float-fun, dsrl, risplit. These are all restored correctly. Don't understand why this doesn't work for trisplit. These were all defined via defun. ---------------------------------------------------------------------- Comment By: Raymond Toy (rtoy) Date: 2010-10-06 07:23 Message: I took a look at this. The routine that is supposed to remove the timer info is trace-unfshadow in mtrace.lisp. I don't understand why this is causing problems. The key part is: (let ((oldf (trace-oldfun fun))) (if (not (null oldf)) (setf (symbol-function fun) oldf) (fmakunbound fun)))) So, the timer version of trisplit is supposed to be replaced with the original trisplit function. But it's not. It's as if fmakunbound were called instead of the setf. But oldf is the original function. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 |
From: SourceForge.net <no...@so...> - 2010-12-04 14:14:51
|
Bugs item #3067098, was opened at 2010-09-15 22:11 Message generated for change (Comment added) made by crategus You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: None >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Dieter Kaiser (crategus) Assigned to: Nobody/Anonymous (nobody) Summary: The command timer for a Lisp function Initial Comment: If we would like to collect timing statistics for a Lisp function and then call kill(all) the Lisp function is gone away: First we do it for a Maxima user function: (%i2) timer(?$rectform); (%o2) [rectform] (%i3) kill(all)$ (%i1) rectform(x); (%o1) x Now for a Lisp function: (%i2) timer(?trisplit); (%o2) [?trisplit] (%i3) kill(all)$ (%i1) rectform(x); Maxima encountered a Lisp error: The function TRISPLIT is undefined. Automatically continuing. To enable the Lisp debugger set *debugger-hook* to nil. I think this is a very old bug, I can reproduce it since Maxima 5.9. timer might be not suitable for a Lisp function, but then the function should not accept a Lisp function as an argument. Dieter Kaiser ---------------------------------------------------------------------- >Comment By: Dieter Kaiser (crategus) Date: 2010-12-04 15:14 Message: Fixed in rpart.lisp revision 1.40. The bug is very mysterious. It helps to change the definition of the function from a defmfun-function to a defun-function. But we do not get the bug for other defmfun-functions and I do not see any difference between a function like risplit and trisplit. I have searched a global symbol which might interfere the behavior for the function trisplit, but I have not found such a symbol. Nevertheless, the change of the definition helps for this case. Closing this bug report as fixed. Dieter Kaiser ---------------------------------------------------------------------- Comment By: Raymond Toy (rtoy) Date: 2010-10-07 14:23 Message: FWIW, I tried a few more lisp functions like %coerce-float-fun, dsrl, risplit. These are all restored correctly. Don't understand why this doesn't work for trisplit. These were all defined via defun. ---------------------------------------------------------------------- Comment By: Raymond Toy (rtoy) Date: 2010-10-06 13:23 Message: I took a look at this. The routine that is supposed to remove the timer info is trace-unfshadow in mtrace.lisp. I don't understand why this is causing problems. The key part is: (let ((oldf (trace-oldfun fun))) (if (not (null oldf)) (setf (symbol-function fun) oldf) (fmakunbound fun)))) So, the timer version of trisplit is supposed to be replaced with the original trisplit function. But it's not. It's as if fmakunbound were called instead of the setf. But oldf is the original function. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=3067098&group_id=4933 |