std::fstream падает при записи в файл ~2.2 Gb
Как пофиксить?
Это не катит:
g++ -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 bug.cpp
$ g++ -v
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-20)
$ g++ bug.cpp
$ ./a.out
File size limit exceeded (core dumped)
$ gdb ./a.out core.22969
GNU gdb Red Hat Linux (5.3.90-0.20030710.40rh)
Core was generated by `./a.out'.
Program terminated with signal 25, File size limit exceeded.
Reading symbols from /usr/lib/libstdc++.so.5...done.
Loaded symbols for /usr/lib/libstdc++.so.5
Reading symbols from /lib/tls/libm.so.6...done.
Loaded symbols for /lib/tls/libm.so.6
Reading symbols from /lib/libgcc_s.so.1...done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /lib/tls/libc.so.6...done.
Loaded symbols for /lib/tls/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
#0 0xb75ebc32 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
(gdb)
(gdb) bt
#0 0xb75ebc32 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0xb749a273 in __write_nocancel () from /lib/tls/libc.so.6
#2 0xb74377af in _IO_new_file_write () from /lib/tls/libc.so.6
#3 0xb743674e in new_do_write () from /lib/tls/libc.so.6
#4 0xb74366e6 in _IO_new_do_write () from /lib/tls/libc.so.6
#5 0xb7436f9a in _IO_new_file_sync () from /lib/tls/libc.so.6
#6 0xb742b77b in fflush () from /lib/tls/libc.so.6
#7 0xb75b8ce1 in std::__basic_file<char>::sync() ()
from /usr/lib/libstdc++.so.5
#8 0xb756ed08 in std::basic_filebuf<char, std::char_traits<char> >::_M_really_overflow(int) () from /usr/lib/libstdc++.so.5
#9 0xb756f29b in std::basic_filebuf<char, std::char_traits<char> >::sync() ()
from /usr/lib/libstdc++.so.5
#10 0xb759e959 in std::ostream::flush() () from /usr/lib/libstdc++.so.5
#11 0xb759ed1f in std::basic_ostream<char, std::char_traits<char> >& std::flush<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&) () from /usr/lib/libstdc++.so.5
#12 0xb759d52c in std::ostream::operator<<(std::ostream& (*)(std::ostream&)) ()
from /usr/lib/libstdc++.so.5
#13 0x08048afc in main () at bug.cpp:25
// bug.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
try
{
fstream fs;
fs.open("test.log", ios::out | ios::app);
if(!fs.is_open()) {
cout << "Error: failed to open 'test.log'\n";
return 1;
}
for(int i=0; i<100000000; i++)
{
fs << "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
<< flush;
if(fs.fail() || !fs.good()) {
cout << "Error: failed to write to stream!\n";
break;
fs.sync();
}
fs.close();
}
catch(...)
{
cout << "Exception!\n";
}
return 0;
}
Ответ на:
комментарий
от aa5779
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Как работать с core файлом? (2004)
- Форум Squid падает в корки. (2007)
- Форум проблема при запуске .срр файла через команду gcc (2023)
- Форум Глюк с gcc (2005)
- Форум C++ STL: ostream_iterator (2006)
- Форум Django lib-dynload/termios.so Segmentation fault (2013)
- Форум как увидеть src код с ошибкой при отладке? (2002)
- Форум Хочу c++11 в gcc - не работает (2013)
- Форум Вывод типа для значений для которых нет перегрузки в std::ostream (2019)
- Форум Не работает линкер. (2007)