Ошибки синтаксиса под Win2k3

Обсуждение программ nnCron и nnCron LITE

Re: Ошибки синтаксиса под Win2k3

Postby Raistlin » Sun, 31 Jan 2016, 21:07

VoidVolker wrote:А можно целиком кронтаб?

Spoiler: show
#CRONTAB FILE
# Classic crontab format:
# Minutes Hours Days Months WeekDays Years Command
# see 'example.tab'

#( purge-cron-log
Time: 0 12 * * 5 *
Action: PURGE-OLD: "log\*.log" 7
)#

<%
: FT>DateTimeStr ( a u -- a u )
FT>YMDHMS
\ секунды: число в строку с ведущим нулем и ":"
DUP 10 < IF S" 0" ELSE S" " THEN ROT N>S S+ S" :" 2SWAP S+
\ минуты: число в строку с ведущим нулем и ":"
ROT DUP 10 < IF S" 0" ELSE S" " THEN ROT N>S S+ S" :" 2SWAP S+
\ :мм:сс
2SWAP S+
\ часы: число в строку с ведущим нулем и " "
ROT DUP 10 < IF S" 0" ELSE S" " THEN ROT N>S S+ S" " 2SWAP S+
\ чч:мм:сс
2SWAP S+
\ дни: число в строку с ведущим нулем и "-"
ROT DUP 10 < IF S" 0" ELSE S" " THEN ROT N>S S+ S" -" 2SWAP S+
\ -дд чч:мм:сс
2SWAP S+
\ месяцы: число в строку с ведущим нулем и "-"
ROT DUP 10 < IF S" 0" ELSE S" " THEN ROT N>S S+ S" -" 2SWAP S+
\ -мм-дд чч:мм:сс
2SWAP S+
\ гггг-мм-дд чч:мм:сс
ROT N>S 2SWAP S+
;
: SecsPassedSince ( a u -- n )
CUR-FTIME 2SWAP D- FT>SEC D>S
;
%>

# uTorrent executable file
# uTorrent.cmd must be located in the same directory
SET uTorrent.exe=%SystemDrive%\Programs\uTorrent\uTorrent.exe
# resume.dat is being updated every 30 s if uTorrent is responding and there
# is any change causing the update, e. g. an upload/download activity
SET resume.dat=%AppData%\uTorrent\resume.dat
# uTorrent_started is created by uTorrent.cmd right after starting uTorrent.
SET uTorrent_started=etc\uTorrent_started
# DontRestart flag file disables uTorrent restart
SET DontRestart=%SystemDrive%\Programs\uTorrent\DontRestart

#( Restart_uTorrent
\ resume.dat update timeout at that uTorrent will be restarted (sec)
120 CONSTANT RestartTimeout
\ resume.dat update timeout at that a warning will be logged (sec)
50 VALUE WarningTimeout
VARIABLE WaitBeforeRestart
Rule: DontRestart EXIST? NOT uTorrent.exe PROC-EXIST? uTorrent_started EXIST? resume.dat FILE-WTIME uTorrent_started FILE-WTIME D< AND NOT AND AND
\ Rule: uTorrent.exe 2DUP S" \" RIndex 1+ MIN S" DontRestart" S+ EXIST? NOT uTorrent.exe PROC-EXIST? uTorrent_started EXIST? resume.dat FILE-WTIME uTorrent_started FILE-WTIME D< AND NOT AND AND
SingleInstance
NoLog
\ NoActive
Action:
uTorrent_started FDELETE
RestartTimeout WarningTimeout < IF RestartTimeout TO WarningTimeout THEN
resume.dat FILE-WTIME SecsPassedSince DUP
WarningTimeout > IF
DUP N>S S" s ago)" S+
S" resume.dat has been modified at " resume.dat FILE-WTIME FT>DateTimeStr S+
S" (" S+ 2SWAP S+ CRON-LOG
RestartTimeout > IF
uTorrent.exe KILL
BEGIN
uTorrent.exe PROC-EXIST?
WHILE
S" Waiting for uTorrent.exe to be killed" CRON-LOG
1000 PAUSE
REPEAT
WaitBeforeRestart @ 1 + DUP WaitBeforeRestart !
S" Waiting %WaitBeforeRestart @ 5 *% s before uTorrent restart" EVAL-SUBST CRON-LOG
5000 * PAUSE
resume.dat FILE-WTIME
ShowMinimized
\ uTorrent.exe 2DUP S" ." RIndex 1+ MIN S" cmd" S+ 2DUP START-APPW
uTorrent.exe 4 - 0 MAX S" .cmd" S+ 2DUP START-APPW
S" exit code: " S+ ExitCodeProc N>S S+ CRON-LOG
ExitCodeProc IF
2DROP
ELSE
BEGIN 2DUP resume.dat FILE-WTIME D= WHILE 1000 PAUSE REPEAT
S" uTorrent initialized" CRON-LOG
2DROP
THEN
THEN
ELSE
DROP
THEN
)#


Последний билд, способный проглотить этот кронтаб, - b5. b6+ сообщают:
Code: Select all
21:03:52 12720 Restart_uTorrent: Internal error. Error # -1073741819

Последний билд, на котором работает окно консоли и можно вызвать окно About, - b6. На b7 и b8 можно вызвать окно About; окно консоли появляется, но остается черным; печатать там можно, но ничего не происходит. На b9+ не появляется ни окно About, ни окно консоли.
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Ошибки синтаксиса под Win2k3

Postby VoidVolker » Sun, 31 Jan 2016, 21:26

Может быть это баг какой-то в ОС или каком-то стороннем софте? У меня таких проблем не наблюдается. Есть чистая 2003 винда?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Ошибки синтаксиса под Win2k3

Postby dothen » Mon, 01 Feb 2016, 04:08

Похоже что это баг.
Возникает ошибка при выполнении слова определённого непосредственно перед
объявлением локальной переменной окружения.
Code: Select all
# Тут работает.
# SET uTorrent.exe=%SystemDrive%\Programs\uTorrent\uTorrent.exe

<%
 : RIndex { a1 u1 a2 u2 -- pos }
    a1 u1 a2 u2 BACK-SEARCH IF DROP a1 - ELSE 2DROP -1 THEN
 ;
 : Index { a1 u1 a2 u2 -- pos }
    a1 u1 a2 u2 SEARCH IF DROP a1 - ELSE 2DROP -1 THEN
 ;

 : KUKU ;
\ Если ниже объявить любую переменную или константу или слово которое
\ не будет использоваться, то ошибки нет.
\ USER KuKu
%>

 SET uTorrent.exe=%SystemDrive%\Programs\uTorrent\uTorrent.exe
# Даже если здесь просто задать любую переменную окружения, то будет ошибка.
# SET kuku=Это баг

#( Test-321
\ : uTorrent.exe S" %SystemDrive%\Programs\uTorrent\uTorrent.exe" EVAL-SUBST \ Работает.
NoActive
  Action:
    uTorrent.exe 2DUP S" \" RIndex 1+ MIN S" DontRestart" S+ MsgBox \ CRON-LOG
    uTorrent.exe 2DUP S" \" Index 1+ MIN S" DontRestart" S+ MsgBox \ CRON-LOG
 KUKU \ Вылезает ошибка.
)#
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Ошибки синтаксиса под Win2k3

Postby VoidVolker » Mon, 01 Feb 2016, 12:53

Выяснил причину: проблема в слове SET, а именно в том, что оно перезаписывает предыдущие 4 байта в кодофайле. Из-за этого происходит перезапись кода в предыдущем слове и как результат - ошибка. Временный фикс выглядит так:
Code: Select all
<% 0 , %>
SET varname=var value


Code: Select all
: test ;
0x77777777 ,

0x77777777 - маркер, перед ним стоит байт 0xC3 - это весь код слова, состоящий только из команды возврата 0xC3 (RET).
Нормальная ситуация:
Code: Select all
\ Дамп всего кода слова после компиляции
\        |<-      служебный код    ->| v-- тут счетчик длины слова, за ним 4 байта - имя слова, далее 4 служебных байта
5342C7   19 86 4F 00  D9 42 53 00  00 04 74 65  73 74 19 42 .┼O.ЩBS...test.B
5342D7   53 00 C3 77  77 77 77 00  00 00 00 00  00 00 00 00 ................

\ Дам исполняемого кода сразу после компиляции
5342D9   C3 77 77 77  77 00 00 00  00 00 00 00  00 00 00 00 ................
5342E9   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 ................


Code: Select all
\ Дамп перед SET
5342D9   C3 77 77 77  77 00 00 00  00 00 00 00  00 00 00 00 ................
5342E9   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 ................
\ Дамп после SET
5342D9   C3 82 50 51  00 F4 42 53  00 00 0C 75  54 6F 72 72 Г'PQ.фBS...uTorr
5342E9   65 6E 74 2E  65 78 65 D0  42 53 00 E8  13 EE F7 FF ent.exeРBS.и.очя

Как видно вот тут маркер и был перезаписан. А когда маркера нет - перезаписывается код предыдущего слова.

Почему не работает консоль - я не знаю, ибо у меня она в 2003 отлично работает.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Ошибки синтаксиса под Win2k3

Postby VoidVolker » Wed, 03 Feb 2016, 18:20

Ошибка исправлена. Спасибо за багрепорт.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Ошибки синтаксиса под Win2k3

Postby Raistlin » Mon, 06 Feb 2017, 23:17

Raistlin wrote:Последний билд, на котором работает окно консоли и можно вызвать окно About, - b6. На b7 и b8 можно вызвать окно About; окно консоли появляется, но остается черным; печатать там можно, но ничего не происходит. На b9+ не появляется ни окно About, ни окно консоли.

Причину черной консоли определил: закомментированный параметр Outfile ON в ini. Полагаю, это баг.
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Ошибки синтаксиса под Win2k3

Postby AlikasS » Tue, 07 Feb 2017, 10:57

Raistlin wrote:
Raistlin wrote:Последний билд, на котором работает окно консоли и можно вызвать окно About, - b6. На b7 и b8 можно вызвать окно About; окно консоли появляется, но остается черным; печатать там можно, но ничего не происходит. На b9+ не появляется ни окно About, ни окно консоли.

Причину черной консоли определил: закомментированный параметр Outfile ON в ini. Полагаю, это баг.

какой каталог рабочий у крона приложения? возможно нет доступа к каталогу где расположен nncron.out
сколько экземпляров крона запущено (сервис + приложение)? возможен конфликт совместного доступа nncron.out, в этом случае еще надо посмотреть RemConsolePort: в обоих nncron.ini
еще как вариант, не прогрузился профиль пользователя (в nncron.ini поиграться с настройками Default*, GUI* )
User avatar
AlikasS
 
Posts: 1434
Joined: Wed, 28 Jun 2006, 05:39
Location: Khabarovsk

Re: Ошибки синтаксиса под Win2k3

Postby Raistlin » Tue, 07 Feb 2017, 19:48

nnCron запускается как сервис, в единственном экземпляре. Это под Win2k3. Шестой бете закомментированный параметр не мешает, а в седьмой и восьмой консоль без этого параметра не работает. В более поздних, как я писал выше, ни консоль, ни окно About у меня вообще не вызываются, но это, видимо, уже другая тема.
Наткнулся я на эту же проблему под Win8.1, когда под одним пользователем, где все по умолчанию, консоль работала, а под другим, куда я подсунул свои ini и tab, - нет. Там nnCron запускается от пользователя, соответственно, конфликта доступа к nncron.out быть не может. Опять же все лечится добавлением параметра Outfile ON в ini.

Что это вообще за параметр? В хелпе не нашел.
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Ошибки синтаксиса под Win2k3

Postby dothen » Tue, 07 Feb 2017, 20:10

Raistlin wrote:Что это вообще за параметр? В хелпе не нашел.

В history.txt
Code: Select all
    beta 7 (2009-03-12)
    + New nncron.ini options Outfile, Logging;
    * search in vocabulary by hash on reload crontabs bug fixed.

Code: Select all
    beta 7 (13.Aug.02)
    * REG-DELETE-KEY: deletes a key and all its subkeys.
    * Modifier FILESONLY (of FOR-FILES:) works now.
    * Background of whole of HINT window is yellow now.
    * bug of -stop fixed
    * It is possible to use "Time: START-TIME" with another Time: specifications
    * nnCron GUI did not considered YearField option on adding reminder.
    + SyntaxRestriction option of nncron.ini
    + New nncron.exe command line switches: -ini inifilename,  -out outfilename
    * Scripting error on Windows 9x bug fixed
    * Saving nncron.ini bug fixed (tm.exe did not save an option,
      if this option was absent in the nncron.ini file)

Help wrote:-out <filename> задает файл для вывода технической информации (по умолчанию: nncron.out)
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Ошибки синтаксиса под Win2k3

Postby Raistlin » Tue, 07 Feb 2017, 21:11

А, так он как раз в седьмой бете появился. То есть ставишь новую бету, суешь старый ini - и получаешь проблему.
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Previous

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 1 guest

cron