Special characters in the commit message causes Bamboo to crash if the file encoding is wrong

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Symptoms

Committing a changeset with special characters causes Bamboo to fail with the following error message in the atlassian-bamboo.log file:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 java.lang.RuntimeException: com.atlassian.bamboo.plugins.hg.HgCommandException: command [C:\Program Files\TortoiseHg\hg.exe, log, --follow, --style, C:\Windows\Temp\hg.style5963527991958284672.tmp, --rev, 89b03bf5695c60657b57a7a817317632deafe4c2:0, --config, ui.ssh=ssh -o StrictHostKeyChecking=no -o BatchMode=yes, --limit, 1] failed. Working directory was `C:\Program Files\Atlassian\Application Data\Bamboo\xml-data\build-dir_hg-repositories-cache\7294473af8196ac76d70c34d76732c6012ae1153'. stderr: stdout: <?xml version="1.0"?><log><logentry revision="25" node="89b03bf5695c60657b57a7a817317632deafe4c2"><author email="gcraimundo">gcraimundo</author><date>2012-07-02T11:52:39+01:00</date><parents></parents><msg xml:space="preserve">Teste com caracteres Tugas e não só - Coração, pé, sofá, à, ó, über, è, €</msg><paths><path>SaphetyTab/UnitTests/UnitTest1.cs</path></paths></logentry> at com.atlassian.bamboo.executor.RetryingTaskExecutor.rerun(RetryingTaskExecutor.java:119) at com.atlassian.bamboo.executor.RetryingTaskExecutor.runTask(RetryingTaskExecutor.java:79) at com.atlassian.bamboo.executor.RetryingTaskExecutor.retry(RetryingTaskExecutor.java:174) at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectionChangesWithRetry(DefaultChangeDetectionManager.java:396) at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceLastBuild(DefaultChangeDetectionManager.java:256) at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceRevisions(DefaultChangeDetectionManager.java:214) at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceRevisions(DefaultChangeDetectionManager.java:139) at com.atlassian.bamboo.v2.trigger.DefaultChangeDetectionManager.collectChangesSinceLastBuildIfTriggered(DefaultChangeDetectionManager.java:118) at com.atlassian.bamboo.v2.trigger.ChangeDetectionListenerAction.process(ChangeDetectionListenerAction.java:95) at com.atlassian.bamboo.chains.ChainExecutionManagerImpl.createChainState(ChainExecutionManagerImpl.java:245) at com.atlassian.bamboo.chains.ChainExecutionManagerImpl.start(ChainExecutionManagerImpl.java:168) at sun.reflect.GeneratedMethodAccessor290.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy81.start(Unknown Source) at sun.reflect.GeneratedMethodAccessor290.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198) at $Proxy82.start(Unknown Source) at com.atlassian.bamboo.plan.PlanExecutionManagerImpl.startWithLockTaken(PlanExecutionManagerImpl.java:249) at com.atlassian.bamboo.plan.PlanExecutionManagerImpl.access$100(PlanExecutionManagerImpl.java:40) at com.atlassian.bamboo.plan.PlanExecutionManagerImpl$1.call(PlanExecutionManagerImpl.java:236) at com.atlassian.bamboo.plan.PlanExecutionManagerImpl$1.call(PlanExecutionManagerImpl.java:230) at com.atlassian.util.concurrent.ManagedLocks$ManagedLockImpl.withLock(ManagedLocks.java:324) at com.atlassian.bamboo.plan.PlanExecutionLockServiceImpl.lock(PlanExecutionLockServiceImpl.java:68) at com.atlassian.bamboo.plan.PlanExecutionManagerImpl.doWithProcessLock(PlanExecutionManagerImpl.java:360) at com.atlassian.bamboo.plan.PlanExecutionManagerImpl.start(PlanExecutionManagerImpl.java:229) at com.atlassian.bamboo.plan.NonBlockingPlanExecutionServiceImpl$1.call(NonBlockingPlanExecutionServiceImpl.java:70) at com.atlassian.bamboo.plan.NonBlockingPlanExecutionServiceImpl$1.call(NonBlockingPlanExecutionServiceImpl.java:61) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at com.atlassian.bamboo.build.pipeline.concurrent.NamedThreadFactory$2.run(NamedThreadFactory.java:50) at java.lang.Thread.run(Unknown Source) Caused by: com.atlassian.bamboo.plugins.hg.HgCommandException: command [C:\Program Files\TortoiseHg\hg.exe, log, --follow, --style, C:\Windows\Temp\hg.style5963527991958284672.tmp, --rev, 89b03bf5695c60657b57a7a817317632deafe4c2:0, --config, ui.ssh=ssh -o StrictHostKeyChecking=no -o BatchMode=yes, --limit, 1] failed. Working directory was `C:\Program Files\Atlassian\Application Data\Bamboo\xml-data\build-dir_hg-repositories-cache\7294473af8196ac76d70c34d76732c6012ae1153'. stderr: stdout: <?xml version="1.0"?><log><logentry revision="25" node="89b03bf5695c60657b57a7a817317632deafe4c2"><author email="gcraimundo">gcraimundo</author><date>2012-07-02T11:52:39+01:00</date><parents></parents><msg xml:space="preserve">Teste com caracteres Tugas e não só - Coração, pé, sofá, à, ó, über, è, €</msg><paths><path>SaphetyTab/UnitTests/UnitTest1.cs</path></paths></logentry> at com.atlassian.bamboo.plugins.hg.HgCommandProcessor.runCommand(HgCommandProcessor.java:488) at com.atlassian.bamboo.plugins.hg.HgCommandProcessor.runCommand(HgCommandProcessor.java:446) at com.atlassian.bamboo.plugins.hg.HgCommandProcessor.getChangesetsSinceRevision(HgCommandProcessor.java:339)

Cause

This is usually the case of wrong file encoding in the OS bamboo wrapper config.

Resolution

Add the parameter wrapper.java.additional.x=-Dfile.encoding=UTF-8 to your $BAMBOO_INSTALL/conf/wrapper.cnf file, where x represents the next available digit in the list of additional configurable.

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.