בקשת מידע | באגים בגרסה 0.9.96? כאן המקום לדווח!
-
@חנניה מצוין, זה מצמצם מאוד: הרשת לא אשמה (איטי גם בלא-מקוון), והמדידה (0.72 שניות לפעולה שאמורה לקחת 0.05) מראה שמשהו מאט את המחשב סביב פתיחת תוכנות. נשארו שני חשודים, ולכל אחד בדיקה קצרה:
בדיקה 1 — קבצים שנשארו מהמעבר בין גרסאות:
פתח בסייר הקבצים את התיקייה%APPDATA%\otzaria\books(להדביק בשורת הכתובת), וכתוב כאן:- מה הגודל של
seforim.db? - האם יש שם קובץ בשם
seforim.db-walאוseforim.db-journal? אם כן — מה גודלו?
בדיקה 2 — האם Windows Defender הוא המאט:
בזמן שהתוכנה עולה (הדקה-שתיים של ההמתנה), פתח מנהל משימות (Ctrl+Shift+Esc) → לשונית "תהליכים", ובדוק אם Antimalware Service Executable נמצא למעלה עם אחוזי מעבד או דיסק גבוהים. אם כן — זה Defender שסורק את קובצי הספרייה הגדולים בכל עלייה, ויש לזה פתרון (החרגת תיקיית אוצריא).אגב, בינתיים כבר תיקנו בעקבות הדיווח שלך שני דברים בקוד שיקלו על העלייה בגרסה הבאה. תודה על שיתוף הפעולה! 🙏
seforim.db
(7,954,743,296 בתים)
קובץ בשם seforim.db-wal
0 בתים
- מה הגודל של
-
seforim.db
(7,954,743,296 בתים)
קובץ בשם seforim.db-wal
0 בתים
@חנניה מתקדמים! העובדה שקיים קובץ
seforim.db-walליד ספרייה של 8GB היא בדיוק מה שחיפשנו — ייתכן שקובץ הספרייה נשאר מהמעבר בין הגרסאות במצב שמאלץ את התוכנה לעשות עבודת תיקון בכל עלייה.בדיקה אחת קטנה שתכריע (מעתיקים את כל השורה ל-cmd, התוכנה סגורה):
powershell -Command "$b=[IO.File]::OpenRead((Join-Path $env:APPDATA 'otzaria\books\seforim.db')); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close()"יודפסו שני מספרים — כתוב כאן מה יצא (למשל
1 1או2 2).ובנוסף, אם עוד לא הספקת — הבדיקה השנייה מהתגובה הקודמת: בזמן ההמתנה של הדקה-שתיים, האם Antimalware Service Executable במנהל המשימות נמצא למעלה עם מעבד/דיסק גבוהים?
-
@חנניה מתקדמים! העובדה שקיים קובץ
seforim.db-walליד ספרייה של 8GB היא בדיוק מה שחיפשנו — ייתכן שקובץ הספרייה נשאר מהמעבר בין הגרסאות במצב שמאלץ את התוכנה לעשות עבודת תיקון בכל עלייה.בדיקה אחת קטנה שתכריע (מעתיקים את כל השורה ל-cmd, התוכנה סגורה):
powershell -Command "$b=[IO.File]::OpenRead((Join-Path $env:APPDATA 'otzaria\books\seforim.db')); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close()"יודפסו שני מספרים — כתוב כאן מה יצא (למשל
1 1או2 2).ובנוסף, אם עוד לא הספקת — הבדיקה השנייה מהתגובה הקודמת: בזמן ההמתנה של הדקה-שתיים, האם Antimalware Service Executable במנהל המשימות נמצא למעלה עם מעבד/דיסק גבוהים?
ובנוסף, אם עוד לא הספקת — הבדיקה השנייה מהתגובה הקודמת: בזמן ההמתנה של הדקה-שתיים, האם Antimalware Service Executable במנהל המשימות נמצא למעלה עם מעבד/דיסק גבוהים?
לא
C:\Users\USER>powershell -Command "$b=[IO.File]::OpenRead((Join-Path $env:APPDATA 'otzaria\books\seforim.db')); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close()" Exception calling "OpenRead" with "1" argument(s): "Could not find a part of the path 'C:\Users\USER\AppData\Roaming\otzaria\books\seforim.db'." At line:1 char:1 + $b=[IO.File]::OpenRead((Join-Path $env:APPDATA 'otzaria\books\seforim ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DirectoryNotFoundException The property 'Position' cannot be found on this object. Verify that the property exists and can be set. At line:1 char:78 + ... ath $env:APPDATA 'otzaria\books\seforim.db')); $b.Position=18; '{0} { ... + ~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyNotFound You cannot call a method on a null-valued expression. At line:1 char:94 + ... )); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Clo ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull You cannot call a method on a null-valued expression. At line:1 char:137 + ... $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close() + ~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull -
ובנוסף, אם עוד לא הספקת — הבדיקה השנייה מהתגובה הקודמת: בזמן ההמתנה של הדקה-שתיים, האם Antimalware Service Executable במנהל המשימות נמצא למעלה עם מעבד/דיסק גבוהים?
לא
C:\Users\USER>powershell -Command "$b=[IO.File]::OpenRead((Join-Path $env:APPDATA 'otzaria\books\seforim.db')); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close()" Exception calling "OpenRead" with "1" argument(s): "Could not find a part of the path 'C:\Users\USER\AppData\Roaming\otzaria\books\seforim.db'." At line:1 char:1 + $b=[IO.File]::OpenRead((Join-Path $env:APPDATA 'otzaria\books\seforim ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DirectoryNotFoundException The property 'Position' cannot be found on this object. Verify that the property exists and can be set. At line:1 char:78 + ... ath $env:APPDATA 'otzaria\books\seforim.db')); $b.Position=18; '{0} { ... + ~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyNotFound You cannot call a method on a null-valued expression. At line:1 char:94 + ... )); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Clo ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull You cannot call a method on a null-valued expression. At line:1 char:137 + ... $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close() + ~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull@חנניה זה ממצא חשוב דווקא: הפקודה חיפשה את הספרייה במיקום ברירת המחדל (
C:\Users\USER\AppData\Roaming\otzaria\books) — והיא לא שם. כלומר הספרייה שלך מותקנת במיקום מותאם אישית.שתי שאלות קצרות:
-
פתח שוב את התיקייה שבה מצאת קודם את
seforim.db, לחץ על שורת הכתובת של סייר הקבצים, והעתק לכאן את הנתיב המלא (למשלD:\otzaria\books). -
באיזה כונן זה יושב — אותו כונן של Windows (בדרך כלל C), או כונן/דיסק אחר? ואם אחר — האם הוא דיסק פנימי, חיצוני (USB), או כרטיס זיכרון?
אם הספרייה יושבת על דיסק מכני או חיצוני איטי — זה לבדו מסביר דקה-שתיים מול קובץ של 8GB, ואז הפתרון פשוט: העברת מיקום הספרייה (יש לזה כפתור בהגדרות) לכונן המהיר.
-
-
"C:\ProgramData\otzaria\books\seforim.db"לא שאכפת לי'
לי בכ"מ ה רק עוזר, מקוה שלא מספים פה את העסק.. -
"C:\ProgramData\otzaria\books\seforim.db"לא שאכפת לי'
לי בכ"מ ה רק עוזר, מקוה שלא מספים פה את העסק..@חנניה תודה — זו התקנת "לכל המשתמשים" (הספרייה ב-ProgramData), ויש לנו חשד ממוקד: ייתכן שקובץ הספרייה נשאר מהמעבר בין הגרסאות במצב שדורש תיקון-בכתיבה בכל עלייה, ובתיקייה הזו אין למשתמש רגיל הרשאת כתיבה — אז התיקון נכשל בשקט וחוזר בכל פתיחה.
שתי פקודות אחרונות (מעתיקים כל שורה ל-cmd, התוכנה סגורה) — כתוב מה יצא מכל אחת:
powershell -Command "$b=[IO.File]::OpenRead('C:\ProgramData\otzaria\books\seforim.db'); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close()"powershell -Command "Get-Item 'C:\ProgramData\otzaria\books\seforim.db*' | Select Name,Length"הראשונה תדפיס שני מספרים (למשל
1 1או2 2), השנייה תציג את קובצי הספרייה וגדליהם. -
C:\Users\USER>powershell -Command "$b=[IO.File]::OpenRead('C:\ProgramData\otzaria\books\seforim.db'); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close()" 1 1 C:\Users\USER>powershell -Command "Get-Item 'C:\ProgramData\otzaria\books\seforim.db*' | Select Name,Length" Name Length ---- ------ seforim.db 7954743296 seforim.db.new-shm 32768 seforim.db.new-wal 0 -
C:\Users\USER>powershell -Command "$b=[IO.File]::OpenRead('C:\ProgramData\otzaria\books\seforim.db'); $b.Position=18; '{0} {1}' -f $b.ReadByte(), $b.ReadByte(); $b.Close()" 1 1 C:\Users\USER>powershell -Command "Get-Item 'C:\ProgramData\otzaria\books\seforim.db*' | Select Name,Length" Name Length ---- ------ seforim.db 7954743296 seforim.db.new-shm 32768 seforim.db.new-wal 0@חנניה מצוין — עכשיו כמעט בטוח שמצאנו את זה. שני הקבצים
seforim.db.new-walו-seforim.db.new-shmהם שאריות של עדכון ספרייה שנקטע באמצע. כשעדכון נקטע, התוכנה מוצאת בכל עלייה קובץ סימון, ומריצה בדיקת תקינות על כל 8 הג'יגה — שזו בדיוק הדקה-שתיים שלך. הבדיקה עוברת, התוכנה מנסה למחוק את הסימון — אבל בתיקיית ProgramData אין לה הרשאה, המחיקה נכשלת בשקט, ובעלייה הבאה הכל חוזר.אימות אחרון + פתרון באותה הודעה:
1. אימות — הרץ ב-cmd:
powershell -Command "Get-Item 'C:\ProgramData\otzaria\books\seforim.db.*' -Force | Select Name,Length"אם מופיע שם קובץ
seforim.db.applying— זה האשם.2. הפתרון (רק אם הקובץ הופיע): פתח שורת פקודה כמנהל (התחל ← הקלד cmd ← קליק ימני ← הפעל כמנהל) והרץ:
del "C:\ProgramData\otzaria\books\seforim.db.applying"זו מחיקה בטוחה לגמרי — זה בדיוק מה שהתוכנה עצמה מנסה (ולא מצליחה) לעשות אחרי שהספרייה כבר עברה את בדיקת התקינות עשרות פעמים. אחרי המחיקה פתח את אוצריא — היא אמורה לעלות תוך שניות.
ובצד שלנו נתקן שזה לא יוכל לקרות יותר לאף אחד.
-
C:\Windows\system32>powershell -Command "Get-Item 'C:\ProgramData\otzaria\books\seforim.db.*' -Force | Select Name,Length" Name Length ---- ------ seforim.db.new-shm 32768 seforim.db.new-wal 0 C:\Windows\system32> -
C:\Windows\system32>powershell -Command "Get-Item 'C:\ProgramData\otzaria\books\seforim.db.*' -Force | Select Name,Length" Name Length ---- ------ seforim.db.new-shm 32768 seforim.db.new-wal 0 C:\Windows\system32>@חנניה טוב שבדקנו — הקובץ החשוד לא קיים, אז אין צורך למחוק כלום. נשארה אפשרות אחת עיקרית שמסבירה את כל הממצאים יחד (גם ההאטה הכללית בפתיחת תהליכים וגם ההמתנה הארוכה): תוכנת סינון תוכן מקומית שמותקנת על המחשב עצמו ובודקת כל קובץ שנקרא — ובכל עלייה היא בודקת מחדש את קובץ הספרייה של 8 ג'יגה.
שתי בדיקות אחרונות:
1. מדידת מהירות קריאה של קובץ הספרייה (מעתיקים את כל השורה ל-cmd):
powershell -Command "$sw=[Diagnostics.Stopwatch]::StartNew(); $fs=[IO.File]::OpenRead('C:\ProgramData\otzaria\books\seforim.db'); $buf=New-Object byte[] 1048576; $read=0; while($read -lt 500 -and ($fs.Read($buf,0,1048576)) -gt 0){$read++}; $fs.Close(); $sw.Stop(); 'MB/s: ' + [math]::Round(500/$sw.Elapsed.TotalSeconds)"כתוב מה יצא (MB/s). על SSD תקין אמור לצאת מאות עד אלפים; אם יוצא מספר דו-ספרתי — מצאנו.
2. האם מותקנת על המחשב עצמו תוכנת סינון כלשהי — נטספארק, JNET, אתרוג, נקי, שומר, קליק וכד'? (לא הסינון של ספק האינטרנט — תוכנה שמותקנת במחשב.) אפשר לבדוק ב"הוספה או הסרה של תוכניות".
-
שיח מרתק איזה תקשורת
-
@חנניה טוב שבדקנו — הקובץ החשוד לא קיים, אז אין צורך למחוק כלום. נשארה אפשרות אחת עיקרית שמסבירה את כל הממצאים יחד (גם ההאטה הכללית בפתיחת תהליכים וגם ההמתנה הארוכה): תוכנת סינון תוכן מקומית שמותקנת על המחשב עצמו ובודקת כל קובץ שנקרא — ובכל עלייה היא בודקת מחדש את קובץ הספרייה של 8 ג'יגה.
שתי בדיקות אחרונות:
1. מדידת מהירות קריאה של קובץ הספרייה (מעתיקים את כל השורה ל-cmd):
powershell -Command "$sw=[Diagnostics.Stopwatch]::StartNew(); $fs=[IO.File]::OpenRead('C:\ProgramData\otzaria\books\seforim.db'); $buf=New-Object byte[] 1048576; $read=0; while($read -lt 500 -and ($fs.Read($buf,0,1048576)) -gt 0){$read++}; $fs.Close(); $sw.Stop(); 'MB/s: ' + [math]::Round(500/$sw.Elapsed.TotalSeconds)"כתוב מה יצא (MB/s). על SSD תקין אמור לצאת מאות עד אלפים; אם יוצא מספר דו-ספרתי — מצאנו.
2. האם מותקנת על המחשב עצמו תוכנת סינון כלשהי — נטספארק, JNET, אתרוג, נקי, שומר, קליק וכד'? (לא הסינון של ספק האינטרנט — תוכנה שמותקנת במחשב.) אפשר לבדוק ב"הוספה או הסרה של תוכניות".
@Otzaria-Bot MB/s: 368
-
למה אתה הורס זה מעניין
-
למה אתה הורס זה מעניין
@רוצה-לגדול חבל על הטוקונים..
-
מזה?
-
מזה?
@רוצה-לגדול יש מגבלת שימוש בAI שמוגבלת למספר מסויים של טוקנים (אתה יכול לשאול בבינה טופ מסתמא יש שם כבר מי שפישט את זה ל"עמך"
) -
@Otzaria-Bot MB/s: 368
@otzaria-bot ניסיתי לעדכן לקדם והבאג נשאר
אין איזה סקריפט אחד שפשוט יבדוק מה זה -
@חנניה נסגרה כעת בעיה בגיטהאב המקושרת לפוסט זה. לפרטים נוספים: https://github.com/Otzaria/otzaria/issues/989
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות