From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 11 Mar 2010 23:42:59 +0300 From: Vladislav Zavjalov To: ALT Linux Team development discussions Message-ID: <20100311204259.GA29975@imap.altlinux.org> References: <20100310082425.5886C1D96765@ssh.git.orion.altlinux.org> <20100311130353.GA22496@wo.int.altlinux.org> <20100311175205.GB4491@mw.office.seiros.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20100311175205.GB4491@mw.office.seiros.ru> User-Agent: Mutt/1.4.2.3i Subject: Re: [devel] Fwd: fuse-encfs-1.5.2-alt7: Sisyphus/x86_64 test rebuild failed [3] X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Mar 2010 20:42:59 -0000 Archived-At: List-Archive: List-Post: On Thu, Mar 11, 2010 at 08:52:05PM +0300, Денис Смирнов wrote: > On Thu, Mar 11, 2010 at 04:03:54PM +0300, Dmitry V. Levin wrote: > > DVL> Апстриму отрепортить не пробовал? > > Проблема вылезла после обновления boost'а у нас. > > Притом я, честно говоря, совсем не в состоянии понять что там происходит, > ибо C++ знаю на уровне "С с классами" и дать сколь-нибудь внятный репорт. > > Может просто линковаться со старым boost? Покопался... boost::archive используется для чтения/записи xml в FileUtils.cpp Облом происходит в std::istream &operator >> в test.cpp:230. Записать xml оно сумело, а прочитать - нет. А прочитать оно его не сумело, поскольку была выставлена версия класса 20080816 (см BOOST_CLASS_VERSION в FileUtils.cpp), а в xml попало 26800 (а для старых версий она хочет читать что-то другое). Взяв минимальный пример с http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/index.html устроил такую штуку, показывающую, что с большими версиями классов происходит фигня, а именно, они устанавливаются по модулю 65536: Так что проблема в boost, и как ее хорошо обойти в fuse-encfs - непонятно... === #include #include #include #define VERSION 65536 struct test{ template void serialize(Archive & ar, const unsigned int version) { std::cerr << "\n" << "new_version: " << version << "\n" << "old_version: " << VERSION << "\n"; ar & i; } int i; }; BOOST_CLASS_VERSION(test, VERSION) int main() { test var; var.i=100; boost::archive::text_oarchive oa(std::cout); oa << var; }