Bug 7658 - svn падает на update при большой вложенности каталогов
: svn падает на update при большой вложенности каталогов
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/subversion)
: unstable
: all Linux
: P2 critical
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2005-08-12 16:18 by
Modified: 2005-08-19 16:13 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-08-12 16:18:52
при глубине вложенности порядка 11-12 svn update падает (segfault).
Единственный
выход -- svn cleanup, зайти поглубже в дерево и сделать svn update там.

В случае, если файлов извлекать не надо, то svn update работает при любой
вложенности.
------- Comment #1 From 2005-08-16 13:20:48 -------
А можно тесткейс как получить такой segfault?

И если не сложно - можете закинуть в апстим?
------- Comment #2 From 2005-08-16 16:58:03 -------
Тесткейс элементарный:

#!/bin/sh
mkdir 1
svnadmin create 1
mkdir 2
svn co file://`realpath 1` 2
mkdir -p 2/1/2/3/4/5/6/7/8/9/10/11/12
svn add 2/1
svn commit -m '' 2
 
svn co file://`realpath 1` 3

кинуть в апстрим не могу.
------- Comment #3 From 2005-08-17 00:15:57 -------
На 1.2.0 проявляется, на 1.2.1 не проявляется.
Похоже, придется закидывать в сизиф 1.2.1 с оторванными perl-bindings...
------- Comment #4 From 2005-08-17 00:22:19 -------
Кстати, на 1.2.1 есть более другие баги, проявляющиеся при больших уровнях
вложенности:

1. при слишком больших уровнях вложенности svn не может прочитать собственный
файл описания изменения в транзакции (во время коммита):
svn: Commit failed (details follow):
svn: Can't read length line in file
'<censored>/1/db/transactions/0-1.txn/node._7t.0'
(обламывается на уровне 282)

2. Если 1й баг не проявляется (например, при 280 вложенных каталогах), то во
время собсно коммита память кушается нещадно. Для коммита используется вся
память и своп на машине с 384М RAM + 128M swap.

Но данне баги, думаю, пока можно считать минорными.

=====#!/bin/sh
mkdir 1
svnadmin create 1
mkdir 2
svn co file://`realpath 1` 2
DIRS=`seq 1 285|xargs echo|tr ' ' '/'`
mkdir -p "2/$DIRS"
svn add 2/1
svn commit -m '' 2

svn co file://`realpath 1` 3
=========
------- Comment #5 From 2005-08-17 01:51:50 -------
Исправлено в 1.2.1-alt1
------- Comment #6 From 2005-08-18 21:48:36 -------
А.. Ну глюки при уровне вложенности больше нескольких десятков как-то мало
волнуют :)