Copy list of files from alien to local

Hello,

I want to download some list of files from alien. In loop by files for some of them TFile::Cp handles and can’t get the file due to connection problems. To avoid it I try to open the file and skip it if failed , since TFile::Open has timeout option. But once timeout had been reached for some file and it is skipped, I get “segmentation violation” on calling TFile::Cp(sourceUrl,destUrl) for next file, wich was successfully opened.
Can someone help me with this? How should I download a list of files ? Maybe there are other ways to avoid handling of TFile::Cp ?

Thanks a lot,
Rishat

Here some code:

TList* fileList;  //list of file urls
TString* destDir = "destination directory/";

for(Int_t i = 0; i < fileList->GetEntries(); i++){
	TString* fileurl = (TString*)fileList->At(i);
	TFile* sfile = 0;
	if(OpenAlienFile(0, str_path.c_str(), sfile) < 0){
		Printf("Cant open file: %s", fileurl->Data());
		log << Form("Cant open file: %s", fileurl->Data());
		if(sfile) sfile->Close("R");
		delete sfile;
		delete gFile;
		continue;
	}
	else {
		system(Form("mkdir -p %s", destDir.Data());
		
		TString localPath = Form("%s/%d.root", destDir.Data(), i);
		if(TFile::Cp(fileurl->Data(), localPath.Data())) myfile << Form("%s\n",localPath.Data());
		else Printf("Failed to copy file");
	}
	
	if(sfile) sfile->Close("R");
	if(sfile) delete sfile;
}

//-----------
Int_t OpenAlienFile(Int_t trial, char* fileUrl, TFile* file){ 

	if(fileUrl){
		file = TFile::Open(fileUrl, "TIMEOUT=120 READ");
		if(!file){
			if(trial<=2){
				Printf(Form("::Message: Could not open file %s (trial %d), try again ...", fileUrl, trial));
				OpenAlienFile(trial+1, fileUrl, file);
			} else {
				Printf(Form("::Error: Could not open file %s, give up ...",fileUrl));
				return -1;
			}
		}
		else {Printf(Form("::Success: File opened: %s.", fileUrl)); return 0;}
	}
	else {
		 Printf(Form("::Error: No file url: %s.", fileUrl));
	}
	return -1;
}

Here is stack trace:

 *** Break *** segmentation violation



===========================================================
There was a crash (#8 0xb2e1bb1d in SigHandler(ESignals) ()).
This is the entire stack trace of all threads:
===========================================================

Thread 8 (Thread 0xb24e0b70 (LWP 20939)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x0872ace6 in nanosleep () from /lib/tls/i686/cmov/libc.so.6
#2  0x0872ab10 in sleep () from /lib/tls/i686/cmov/libc.so.6
#3  0x07b6892e in GarbageCollectorThread (arg=0xa734b80, thr=0xa734c28)
    at XrdClientConnMgr.cc:73
#4  0x07b77b05 in XrdClientThreadDispatcher (arg=0xa734c34)
    at XrdClientThread.cc:32
#5  0x07ab5d4d in XrdSysThread_Xeq ()
   from /opt/alice/root/v5-28-00a/lib/libNetx.so
#6  0x0091196e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#7  0x08760a4e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 7 (Thread 0xb19b9b70 (LWP 20940)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x08752b86 in poll () from /lib/tls/i686/cmov/libc.so.6
#2  0x07b540b5 in XrdClientSock::RecvRaw (this=0xaf8d6f0, buffer=0xb0dce34, 
    length=8, substreamid=-1, usedsubstreamid=0xb19b9138)
    at XrdClientSock.cc:131
#3  0x07b70848 in XrdClientPhyConnection::ReadRaw (this=0xaf8cb00, 
    buf=0xb0dce34, len=8, substreamid=-1, usedsubstreamid=0xb19b9138)
    at XrdClientPhyConnection.cc:362
#4  0x07b6d373 in XrdClientMessage::ReadRaw (this=0xb0dce10, phy=0xaf8cb00)
    at XrdClientMessage.cc:152
#5  0x07b6fe08 in XrdClientPhyConnection::BuildMessage (this=0xaf8cb00, 
    IgnoreTimeouts=true, Enqueue=true) at XrdClientPhyConnection.cc:443
#6  0x07b705cf in SocketReaderThread (arg=0xaf8cb00, thr=0xaf8ab38)
    at XrdClientPhyConnection.cc:61
#7  0x07b77b05 in XrdClientThreadDispatcher (arg=0xaf8ab44)
    at XrdClientThread.cc:32
#8  0x07ab5d4d in XrdSysThread_Xeq ()
   from /opt/alice/root/v5-28-00a/lib/libNetx.so
#9  0x0091196e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#10 0x08760a4e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 6 (Thread 0xb07ffb70 (LWP 20947)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x08752b86 in poll () from /lib/tls/i686/cmov/libc.so.6
#2  0x07b540b5 in XrdClientSock::RecvRaw (this=0xb04c020, buffer=0xb1b94ec, 
    length=8, substreamid=-1, usedsubstreamid=0xb07ff138)
    at XrdClientSock.cc:131
#3  0x07b70848 in XrdClientPhyConnection::ReadRaw (this=0xb04a5c0, 
    buf=0xb1b94ec, len=8, substreamid=-1, usedsubstreamid=0xb07ff138)
    at XrdClientPhyConnection.cc:362
#4  0x07b6d373 in XrdClientMessage::ReadRaw (this=0xb1b94c8, phy=0xb04a5c0)
    at XrdClientMessage.cc:152
#5  0x07b6fe08 in XrdClientPhyConnection::BuildMessage (this=0xb04a5c0, 
    IgnoreTimeouts=true, Enqueue=true) at XrdClientPhyConnection.cc:443
#6  0x07b705cf in SocketReaderThread (arg=0xb04a5c0, thr=0xb01f140)
    at XrdClientPhyConnection.cc:61
#7  0x07b77b05 in XrdClientThreadDispatcher (arg=0xb01f14c)
    at XrdClientThread.cc:32
#8  0x07ab5d4d in XrdSysThread_Xeq ()
   from /opt/alice/root/v5-28-00a/lib/libNetx.so
#9  0x0091196e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#10 0x08760a4e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 5 (Thread 0xafffeb70 (LWP 20948)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x0872ace6 in nanosleep () from /lib/tls/i686/cmov/libc.so.6
#2  0x0872ab10 in sleep () from /lib/tls/i686/cmov/libc.so.6
#3  0x07b5f2aa in XrdClientConn::CheckErrorStatus (this=0xb020e30, 
    mex=0xb04b4d0, Retry=
0xafffdad2, CmdName=0x7ba4605 "Open")
    at XrdClientConn.cc:960
#4  0x07b62650 in XrdClientConn::SendGenCommand (this=0xb020e30, 
    req=0xafffdfe0, reqMoreData=0xb04e724, answMoreDataAllocated=0x0, 
    answMoreData=0xafffdb2c, HasToAlloc=false, CmdName=0x7ba4605 "Open", 
    substreamid=0) at XrdClientConn.cc:632
#5  0x07b4b3bd in XrdClient::LowOpen (this=0xb01f3e8, 
    file=0xb04ace8 "/00/28207/65724420-a489-11df-b166-001e0bd3f44c?&authz=-----BEGIN SEALED CIPHER-----\nQPjh4PTeg-0BKrmaNUzLJjdcmkF8Dq-g9jnR5xb25AD5jajZ7UJ8jPLLWfkzP+605eHN+9QqXT5O\nX+qSn3B3QcBnHtxCYFewB1-QOTmeBdeWcHC-3eZ"..., mode=420, 
    options=272, additionalquery=0x0) at XrdClient.cc:1110
#6  0x07b4bb79 in XrdClient::TryOpen (this=0xb01f3e8, mode=420, options=272, 
    doitparallel=false) at XrdClient.cc:989
#7  0x07b4e3a8 in FileOpenerThread (arg=0xb01f3e8, thr=0xb04bf60)
    at XrdClient.cc:55
#8  0x07b77b05 in XrdClientThreadDispatcher (arg=0xb04bf6c)
    at XrdClientThread.cc:32
#9  0x07ab5d4d in XrdSysThread_Xeq ()
   from /opt/alice/root/v5-28-00a/lib/libNetx.so
#10 0x0091196e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#11 0x08760a4e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 4 (Thread 0xaf7fdb70 (LWP 20952)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x0872ace6 in nanosleep () from /lib/tls/i686/cmov/libc.so.6
#2  0x0872ab10 in sleep () from /lib/tls/i686/cmov/libc.so.6
#3  0x07b5f2aa in XrdClientConn::CheckErrorStatus (this=0xafc6690, 
    mex=0xb04be98, Retry=
0xaf7fcad2, CmdName=0x7ba4605 "Open")
    at XrdClientConn.cc:960
#4  0x07b62650 in XrdClientConn::SendGenCommand (this=0xafc6690, 
    req=0xaf7fcfe0, reqMoreData=0xb0801134, answMoreDataAllocated=0x0, 
    answMoreData=0xaf7fcb2c, HasToAlloc=false, CmdName=0x7ba4605 "Open", 
    substreamid=0) at XrdClientConn.cc:632
#5  0x07b4b3bd in XrdClient::LowOpen (this=0xb01a040, 
    file=0xb058f48 "/00/28207/65724420-a489-11df-b166-001e0bd3f44c?&authz=-----BEGIN SEALED CIPHER-----\nS0mxMCKVSgcXh1bxsBkkyQVpvVoqcAlv1das+7LCZmAKpDXexlGTBLbqZJGb4uzW3LjF3SPBFTQh\nBq+xTQBXK3gP39BfuZMMOCd6twJgDu+QtUtFK8Y"..., mode=420, 
    options=272, additionalquery=0x0) at XrdClient.cc:1110
#6  0x07b4bb79 in XrdClient::TryOpen (this=0xb01a040, mode=420, options=272, 
    doitparallel=false) at XrdClient.cc:989
#7  0x07b4e3a8 in FileOpenerThread (arg=0xb01a040, thr=0xb04f448)
    at XrdClient.cc:55
#8  0x07b77b05 in XrdClientThreadDispatcher (arg=0xb04f454)
    at XrdClientThread.cc:32
#9  0x07ab5d4d in XrdSysThread_Xeq ()
   from /opt/alice/root/v5-28-00a/lib/libNetx.so
#10 0x0091196e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#11 0x08760a4e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 3 (Thread 0xaeffcb70 (LWP 20954)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x08752b86 in poll () from /lib/tls/i686/cmov/libc.so.6
#2  0x07b540b5 in XrdClientSock::RecvRaw (this=0xb0edeb0, buffer=0xb0ef68c, 
    length=8, substreamid=-1, usedsubstreamid=0xaeffc138)
    at XrdClientSock.cc:131
#3  0x07b70848 in XrdClientPhyConnection::ReadRaw (this=0xb0ec4a8, 
    buf=0xb0ef68c, len=8, substreamid=-1, usedsubstreamid=0xaeffc138)
    at XrdClientPhyConnection.cc:362
#4  0x07b6d373 in XrdClientMessage::ReadRaw (this=0xb0ef668, phy=0xb0ec4a8)
    at XrdClientMessage.cc:152
#5  0x07b6fe08 in XrdClientPhyConnection::BuildMessage (this=0xb0ec4a8, 
    IgnoreTimeouts=true, Enqueue=true) at XrdClientPhyConnection.cc:443
#6  0x07b705cf in SocketReaderThread (arg=0xb0ec4a8, thr=0xb0edfe8)
    at XrdClientPhyConnection.cc:61
#7  0x07b77b05 in XrdClientThreadDispatcher (arg=0xb0edff4)
    at XrdClientThread.cc:32
#8  0x07ab5d4d in XrdSysThread_Xeq ()
   from /opt/alice/root/v5-28-00a/lib/libNetx.so
#9  0x0091196e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#10 0x08760a4e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 2 (Thread 0xadffab70 (LWP 20956)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x08752b86 in poll () from /lib/tls/i686/cmov/libc.so.6
#2  0x07b540b5 in XrdClientSock::RecvRaw (this=0xb0d7fc0, buffer=0xb0edc24, 
    length=8, substreamid=-1, usedsubstreamid=0xadffa138)
    at XrdClientSock.cc:131
#3  0x07b70848 in XrdClientPhyConnection::ReadRaw (this=0xb015280, 
    buf=0xb0edc24, len=8, substreamid=-1, usedsubstreamid=0xadffa138)
    at XrdClientPhyConnection.cc:362
#4  0x07b6d373 in XrdClientMessage::ReadRaw (this=0xb0edc00, phy=0xb015280)
    at XrdClientMessage.cc:152
#5  0x07b6fe08 in XrdClientPhyConnection::BuildMessage (this=0xb015280, 
    IgnoreTimeouts=true, Enqueue=true) at XrdClientPhyConnection.cc:443
#6  0x07b705cf in SocketReaderThread (arg=0xb015280, thr=0xb015cf0)
    at XrdClientPhyConnection.cc:61
#7  0x07b77b05 in XrdClientThreadDispatcher (arg=0xb015cfc)
    at XrdClientThread.cc:32
#8  0x07ab5d4d in XrdSysThread_Xeq ()
   from /opt/alice/root/v5-28-00a/lib/libNetx.so
#9  0x0091196e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#10 0x08760a4e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread 0xb250b6d0 (LWP 20931)):
#0  0x00ea0422 in __kernel_vsyscall ()
#1  0x0872a7fb in waitpid () from /lib/tls/i686/cmov/libc.so.6
#2  0x086cbde3 in ?? () from /lib/tls/i686/cmov/libc.so.6
#3  0x086cc172 in system () from /lib/tls/i686/cmov/libc.so.6
#4  0x0091a27d in system () from /lib/tls/i686/cmov/libpthread.so.0
#5  0xb2e1586d in TUnixSystem::Exec(char const*) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#6  0xb2e1c685 in TUnixSystem::StackTrace() ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#7  0xb2e1ba0f in TUnixSystem::DispatchSignals(ESignals) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#8  0xb2e1bb1d in SigHandler(ESignals) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#9  0xb2e12a02 in sighandler(int) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#10 <signal handler called>
#11 0x051c023d in TFileOpenHandle::Matches(char const*) ()
   from /opt/alice/root/v5-28-00a/lib/libRIO.so.5.28
#12 0x051cbed5 in TFile::Open(char const*, char const*, char const*, int, int)
    () from /opt/alice/root/v5-28-00a/lib/libRIO.so.5.28
#13 0x051cc9c3 in TFile::Cp(char const*, char const*, bool, unsigned int) ()
   from /opt/alice/root/v5-28-00a/lib/libRIO.so.5.28
#14 0x0528dbed in G__G__IO_111_0_126(G__value*, char const*, G__param*, int) ()
   from /opt/alice/root/v5-28-00a/lib/libRIO.so.5.28
#15 0x074adac7 in Cint::G__ExceptionWrapper(int (*)(G__value*, char const*, G__param*, int), G__value*, char*, G__param*, int) ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#16 0x0755c85f in G__execute_call ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#17 0x0755d70a in G__call_cppfunc ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#18 0x07537918 in G__interpret_func ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#19 0x07526214 in G__getfunction ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#20 0x074fedf3 in G__getitem ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#21 0x07504d87 in G__getexpr ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#22 0x0750f415 in G__test () from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#23 0x0758d936 in G__exec_statement ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#24 0x0758aa8f in G__exec_statement ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#25 0x07590758 in G__exec_statement ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#26 0x0759315e in T.1480 () from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#27 0x0758f405 in G__exec_statement ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#28 0x07538dc8 in G__interpret_func ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#29 0x07526279 in G__getfunction ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#30 0x074fedf3 in G__getitem ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#31 0x07504d87 in G__getexpr ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#32 0x0758c2d4 in G__exec_statement ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#33 0x074e9da1 in G__exec_tempfile_core ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#34 0x074ea0f9 in G__exec_tempfile_fp ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#35 0x07598b94 in G__process_cmd ()
   from /opt/alice/root/v5-28-00a/lib/libCint.so.5.28
#36 0xb2dd733b in TCint::ProcessLine(char const*, TInterpreter::EErrorCode*) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#37 0xb2d2272c in TApplication::ProcessLine(char const*, bool, int*) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#38 0x0443c928 in TRint::HandleTermInput() ()
   from /opt/alice/root/v5-28-00a/lib/libRint.so.5.28
#39 0x0443af95 in TTermInputHandler::Notify() ()
   from /opt/alice/root/v5-28-00a/lib/libRint.so.5.28
#40 0x0443de34 in TTermInputHandler::ReadNotify() ()
   from /opt/alice/root/v5-28-00a/lib/libRint.so.5.28
#41 0xb2e19b97 in TUnixSystem::CheckDescriptors() ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#42 0xb2e19d65 in TUnixSystem::DispatchOneEvent(bool) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#43 0xb2d89111 in TSystem::InnerLoop() ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#44 0xb2d8be69 in TSystem::Run() ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#45 0xb2d20977 in TApplication::Run(bool) ()
   from /opt/alice/root/v5-28-00a/lib/libCore.so.5.28
#46 0x0443d6c1 in TRint::Run(bool) ()
   from /opt/alice/root/v5-28-00a/lib/libRint.so.5.28
#47 0x08049a61 in main (argc=1, argv=0xbfe4fdc4)
    at /opt/alice/aliroot/trunk/src/ALIROOT/aliroot.cxx:98
===========================================================


The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#11 0x051c023d in TFileOpenHandle::Matches(char const*) ()
   from /opt/alice/root/v5-28-00a/lib/libRIO.so.5.28
#12 0x051cbed5 in TFile::Open(char const*, char const*, char const*, int, int)
    () from /opt/alice/root/v5-28-00a/lib/libRIO.so.5.28
#13 0x051cc9c3 in TFile::Cp(char const*, char const*, bool, unsigned int) ()
   from /opt/alice/root/v5-28-00a/lib/libRIO.so.5.28
===========================================================

copyFilesAlien2Loc.C (3.14 KB)

Hi Rishat,

Do you still have this problem? Since v5.28 is bit a old, could you retry with v5.32? If this still fails, can you reproduce the problem when running with valgrind (in which case, the output might indicate what the problem is)?

Thanks,
Philippe.