Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

std::bad_alloc when XML file contains comments in feature tag #17

Open
olibre opened this issue Oct 30, 2015 · 1 comment
Open

std::bad_alloc when XML file contains comments in feature tag #17

olibre opened this issue Oct 30, 2015 · 1 comment

Comments

@olibre
Copy link

olibre commented Oct 30, 2015

kwstyle -v -xml KWStyle.xml ../modules/main/main.cpp throws std::bad_alloc without any print.

The KWStyle.xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<Description>

    <AnyXXX>
        <!-- any text -->
    </AnyXXX>

</Description>

The strace output:

execve("/usr/local/bin/kwstyle", ["kwstyle", "-v", "-xml", "KWStyle.xml", "../modules/main/main.cpp"], [/* 34 vars */]) = 0
brk(0)                                  = 0x8e2000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35f4b000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=49801, ...}) = 0
mmap(NULL, 49801, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fdf35f3e000
close(3)                                = 0
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=19512, ...}) = 0
mmap(NULL, 2109744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdf35b27000
mprotect(0x7fdf35b2a000, 2093056, PROT_NONE) = 0
mmap(0x7fdf35d29000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fdf35d29000
close(3)                                = 0
open("/lib64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\265\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=991744, ...}) = 0
mmap(NULL, 3171360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdf35820000
mprotect(0x7fdf35909000, 2093056, PROT_NONE) = 0
mmap(0x7fdf35b08000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7fdf35b08000
mmap(0x7fdf35b12000, 82976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdf35b12000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260T\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1141552, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35f3d000
mmap(NULL, 3150168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdf3551e000
mprotect(0x7fdf3561f000, 2093056, PROT_NONE) = 0
mmap(0x7fdf3581e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x100000) = 0x7fdf3581e000
close(3)                                = 0
open("/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360*\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88720, ...}) = 0
mmap(NULL, 2184192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdf35308000
mprotect(0x7fdf3531d000, 2093056, PROT_NONE) = 0
mmap(0x7fdf3551c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7fdf3551c000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\34\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2107760, ...}) = 0
mmap(NULL, 3932736, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fdf34f47000
mprotect(0x7fdf350fd000, 2097152, PROT_NONE) = 0
mmap(0x7fdf352fd000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b6000) = 0x7fdf352fd000
mmap(0x7fdf35303000, 16960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fdf35303000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35f3c000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35f3a000
arch_prctl(ARCH_SET_FS, 0x7fdf35f3a740) = 0
mprotect(0x7fdf352fd000, 16384, PROT_READ) = 0
mprotect(0x7fdf3551c000, 4096, PROT_READ) = 0
mprotect(0x7fdf3581e000, 4096, PROT_READ) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35f39000
mprotect(0x7fdf35b08000, 32768, PROT_READ) = 0
mprotect(0x7fdf35d29000, 4096, PROT_READ) = 0
mprotect(0x84c000, 4096, PROT_READ)     = 0
mprotect(0x7fdf35f4c000, 4096, PROT_READ) = 0
munmap(0x7fdf35f3e000, 49801)           = 0
brk(0)                                  = 0x8e2000
brk(0x903000)                           = 0x903000
brk(0)                                  = 0x903000
lstat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
stat("/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
getcwd("/home/ohessling/dev/foundation/scripts", 2048) = 39
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD/ohessling", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat("/home/OAD/ohessling/dev", {st_mode=S_IFLNK|0777, st_size=19, ...}) = 0
readlink("/home/OAD/ohessling/dev", "/home/ohessling/dev", 4095) = 19
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/ohessling", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat("/home/ohessling/dev", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/ohessling/dev/foundation", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home/ohessling/dev/foundation/scripts", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD/ohessling", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat("/home/OAD/ohessling/dev", {st_mode=S_IFLNK|0777, st_size=19, ...}) = 0
readlink("/home/OAD/ohessling/dev", "/home/ohessling/dev", 4095) = 19
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/ohessling", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat("/home/ohessling/dev", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/ohessling/dev/foundation", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD/ohessling", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat("/home/OAD/ohessling/dev", {st_mode=S_IFLNK|0777, st_size=19, ...}) = 0
readlink("/home/OAD/ohessling/dev", "/home/ohessling/dev", 4095) = 19
  tat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
▽stat("/home/ohessling", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat("/home/ohessling/dev", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/OAD/ohessling", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat("/home/ohessling/dev", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("KWStyle.xml", O_RDONLY)           = 3
lseek(3, 0, SEEK_END)                   = 4833
lseek(3, 0, SEEK_CUR)                   = 4833
lseek(3, 0, SEEK_SET)                   = 0
read(3, "<?xml version=\"1.0\" encoding=\"is"..., 8191) = 4833
brk(0)                                  = 0x903000
brk(0x92a000)                           = 0x92a000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35ef9000
brk(0)                                  = 0x92a000
brk(0)                                  = 0x92a000
brk(0x90b000)                           = 0x90b000
brk(0)                                  = 0x90b000
mmap(NULL, 524288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35e79000
munmap(0x7fdf35ef9000, 262144)          = 0
mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf35d79000
munmap(0x7fdf35e79000, 524288)          = 0
mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf34d47000
munmap(0x7fdf35d79000, 1048576)         = 0
mmap(NULL, 4194304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf34947000
munmap(0x7fdf34d47000, 2097152)         = 0
mmap(NULL, 8388608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf34147000
munmap(0x7fdf34947000, 4194304)         = 0
mmap(NULL, 16777216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf33147000
munmap(0x7fdf34147000, 8388608)         = 0
mmap(NULL, 33554432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf31147000
munmap(0x7fdf33147000, 16777216)        = 0
mmap(NULL, 67108864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf2d147000
munmap(0x7fdf31147000, 33554432)        = 0
mmap(NULL, 134217728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf25147000
munmap(0x7fdf2d147000, 67108864)        = 0
mmap(NULL, 268435456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdf15147000
munmap(0x7fdf25147000, 134217728)       = 0
mmap(NULL, 536870912, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdef5147000
munmap(0x7fdf15147000, 268435456)       = 0
mmap(NULL, 1073741824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdeb5147000
munmap(0x7fdef5147000, 536870912)       = 0
mmap(NULL, 2147483648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fde35147000
munmap(0x7fdeb5147000, 1073741824)      = 0
mmap(NULL, 4294967296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdd35147000
munmap(0x7fde35147000, 2147483648)      = 0
mmap(NULL, 8589934592, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
brk(0)                                  = 0x90b000
brk(0x20090b000)                        = 0x90b000
mmap(NULL, 8590069760, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fdf2cf47000
munmap(0x7fdf2cf47000, 51089408)        = 0
munmap(0x7fdf34000000, 16019456)        = 0
mprotect(0x7fdf30000000, 135168, PROT_READ|PROT_WRITE) = 0
mmap(NULL, 8589934592, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
write(2, "terminate called after throwing "..., 48terminate called after throwing an instance of ') = 48
write(2, "std::bad_alloc", 14std::bad_alloc)          = 14
write(2, "'\n", 2'
)                      = 2
write(2, "  what():  ", 11  what():  )             = 11
write(2, "std::bad_alloc", 14std::bad_alloc)          = 14
write(2, "\n", 1
)                       = 1
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
gettid()                                = 12482
tgkill(12482, 12482, SIGABRT)           = 0
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=12482, si_uid=178785111} ---
@Nekto89
Copy link
Contributor

Nekto89 commented Jun 10, 2018

I can remove simple comments using regex and it fixes the issue, but is this a proper way? It might be better to just integrate thirdparty for proper xml parsing (encoding, CDATA, character escaping, etc.). pugixml for example

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants